发明名称 Method and device for code obfuscation
摘要 Compiled computer code comprising computer code instructions organized in a plurality of basic blocks is obfuscated by replacing a jump instruction in a first basic block with a function call with at least one parameter, wherein the function call when executed determines the address of the next function to execute in dependence on the parameter; inserting into the compiled computer code an instruction that allocates a value to the parameter, the value being such that the address determined by the function call corresponds to the address of the replace jump instruction. The allocation function is inserted into the computer code in a second basic block, different from the first basic block, preferably using information from a control flow graph. This can ensure that the obfuscated code cannot be disassembled without information from the CFG, while the CFG cannot be generated from the obfuscated code. Also provided is a device for code obfuscation.
申请公布号 US8762966(B2) 申请公布日期 2014.06.24
申请号 US200912737730 申请日期 2009.08.17
申请人 Thomson Licensing 发明人 Monsifrot Antoine;Lahoudere Fabien
分类号 G06F9/45 主分类号 G06F9/45
代理机构 代理人 Carter Jeffrey D.
主权项 1. A method of obfuscating compiled computer code comprising computer code instructions organised in a plurality of basic blocks, the method comprising the steps, in a device, of: replacing a jump instruction in a first basic block with a function call with at least one parameter, wherein the function call, when executed, determines the address of the next function to execute in dependence on the parameter; inserting into the compiled computer code an instruction that allocates a value to the parameter, the value being such that the address determined by the function call corresponds to the destination address of the replaced jump instruction; wherein the allocation instruction is inserted into the computer code in a second basic block, different from the first basic block and intended to be executed before the first basic block, and further comprising a step of: choosing the second basic block in an execution path between a preceding third basic block that comprises a conditional jump instruction and the first basic block.
地址 Boulogne, Billancourt FR