Many a time we come across malware which is extremely confusing and has lots of JMP and CALL statements. It becomes very difficult to find out what exactly the malware is doing; if you use a purely manual technique..and you start seeing stars after a while. At least I did :)
So to help you understand the control flow better you can use something called a Hit Trace in Olly. Here is how you can best use a Hit Trace:-
a) Load the executable into Olly. You'll have to use 2.01; I couldn't find this in Olly 1.10.
b) Till what point in the code, do you want to understand code flow? Identify that point and set a breakpoint there using F2.
c) Once you've set the breakpoint, navigate to Trace - Run hit trace. This will automatically run the malware until the breakpoint that you had set earlier.
d) If there's some anti debug measures or the process simply exits before your breakpoint...you won't be able to see the Hit Trace at all. However, if the program is still active, you should see a little red dot to the left of each assembly instruction. This just says....'This instruction has been run at least once'.
You will notice a lot of gaps in between the 'red dot' lines. That is because those instructions were never triggered at all. You'll see this specially in cases of JMP instructions.
There's another feature called 'Run Trace' in Olly and the way to use that to identify code flow is to Log to File and then study the log.
Or lastly (as far as I know) you can set breakpoints and then use the 'Trace Over/Into and Animate over/Into) to step into and over code interactively using the '+' and '-' keys to go forward or back.
But the Hit Trace is quite neat and it offers a very nice option to identify control flow. Until next time ...bye :)
So to help you understand the control flow better you can use something called a Hit Trace in Olly. Here is how you can best use a Hit Trace:-
a) Load the executable into Olly. You'll have to use 2.01; I couldn't find this in Olly 1.10.
b) Till what point in the code, do you want to understand code flow? Identify that point and set a breakpoint there using F2.
c) Once you've set the breakpoint, navigate to Trace - Run hit trace. This will automatically run the malware until the breakpoint that you had set earlier.
d) If there's some anti debug measures or the process simply exits before your breakpoint...you won't be able to see the Hit Trace at all. However, if the program is still active, you should see a little red dot to the left of each assembly instruction. This just says....'This instruction has been run at least once'.
You will notice a lot of gaps in between the 'red dot' lines. That is because those instructions were never triggered at all. You'll see this specially in cases of JMP instructions.
There's another feature called 'Run Trace' in Olly and the way to use that to identify code flow is to Log to File and then study the log.
Or lastly (as far as I know) you can set breakpoints and then use the 'Trace Over/Into and Animate over/Into) to step into and over code interactively using the '+' and '-' keys to go forward or back.
But the Hit Trace is quite neat and it offers a very nice option to identify control flow. Until next time ...bye :)