Software deobfuscation system and method
Abstract
A system and method are disclosed that enable automated deobfuscation of software. A method may include identifying at least one section of target software matching trigger criteria, either by using pattern matching or behavior analysis; emulating at least a portion of the identified section; and generating deobfuscated software by substituting a simplified section for the identified section. The method may further be iterated. Emulation includes simulating the effect of certain instructions on control flow and/or memory locations, such as the program stack, a register, cache memory, heap memory, or other memory. The simplified section may comprise a number of no operation (NOP) instructions replacing, which may then be jumped for further simplification.
Claims
exact text as granted — not AI-modified1 . A method of deobfuscating software embodied on a computer readable medium, the method comprising:
identifying at least one section of target software matching trigger criteria; emulating at least a portion of the identified section to determine a first function; and generating deobfuscated software by substituting a simplified section for the identified section, the simplified section having a second function equivalent to the first function.
2 . The method of claim 1 further comprising:
reading the target software from a computer readable medium.
3 . The method of claim 1 further comprising:
writing the deobfuscated software to a computer readable medium.
4 . The method of claim 1 wherein substituting a simplified section comprises substituting a simplified section comprising at least one no operation (NOP) instruction, and wherein the simplified section uses a same number of bytes as the identified section.
5 . The method of claim 1 wherein emulating at least a portion of the identified section comprises simulating an effect of the identified section on at least one selected from the list comprising:
a memory location and control flow.
6 . The method of claim 1 further comprising representing the simplified section with assembly language instructions.
7 . The method of claim 1 wherein identifying at least one section comprises matching a pattern of instructions.
8 . The method of claim 1 wherein identifying at least one section comprises analyzing behavior.
9 . The method of claim 1 further comprising:
selecting an emulation mode from a predefined set of emulation modes, wherein different ones of the set of emulation modes use different rule sets for generating deobfuscated software.
10 . The method of claim 1 further comprising:
inserting jump instructions to bypass sections of no operation (NOP) instructions.
11 . A computer program embodied on a computer readable medium, the program comprising:
code for identifying at least one section of target software matching trigger criteria; code for emulating at least a portion of the identified section to determine a first function; and code for generating deobfuscated software by substituting a simplified section for the identified section, the simplified section having a second function that is equivalent to the first function.
12 . The program of claim 11 further comprising:
code for reading the target software from a computer readable medium; and code for writing the deobfuscated software to a computer readable medium.
13 . The program of claim 11 wherein the code for generating deobfuscated software comprises code for substituting a simplified section comprising at least one no operation (NOP) instruction, wherein the simplified section uses a same number of bytes as the identified section.
14 . The program of claim 11 wherein the code for emulating at least a portion of the identified section comprises code for simulating an effect of the identified section on at least one selected from the list comprising:
a memory location and control flow.
15 . The program of claim 11 further comprising code for representing the simplified section with assembly language instructions.
16 . The program of claim 11 wherein the code for identifying at least one section of target software comprises code for pattern matching.
17 . The program of claim 11 wherein the code for identifying at least one section of target software comprises code for behavior analysis.
18 . The program of claim 11 further comprising:
code for selecting an emulation mode from a predefined set of emulation modes, wherein different ones of the set of emulation modes use different rule sets for generating deobfuscated software.
19 . The method of claim 11 further comprising:
code for inserting jump instructions to bypass sections of no operation (NOP) instructions.
20 . A deobfuscation system comprising:
at least one processor; and memory coupled to the at least one processor, wherein the memory and the at least one processor are configured to:
receive target software;
identify at least one section of the target software matching trigger criteria;
emulate at least a portion of the identified section to determine a first effect of the identified section on a memory location and control flow;
generate deobfuscated software by substituting a simplified section for the identified section, wherein the simplified section has a second effect on the memory location and the control flow that is equivalent to the first effect; and
output the deobfuscated software.Join the waitlist — get patent alerts
Track US2009064118A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.