📚 OpenRCE is preserved as a read-only archive. Launched at RECon Montreal in 2005. Registration and posting are disabled.








Flag: Tornado! Hurricane!

 Forums >>  Brainstorms - General  >>  Strategies for Reversing Large Binaries/Diffs

Topic created on: March 13, 2008 15:09 CDT by rman .

I'd like to get some input from the more experienced guys around here about how to go about reversing/auditing large binaries.  I'm not the most noobish, though still a noob :), but honestly I get a little intimidated by large projects, for example the patches released for Outlook 2007 last patch Tuesday modified 15 or so files.  To really examine this, even with great tools like bindiff seems a monumental task just to be able to find the bug, be able to craft some countermeasures, and have a good idea of whatever else was fixed.

I'm sure that with experience comes more speed, but I'd like some advice of good techniques/strategies for looking at this large files (or groups of them).  Do you focus on data flow, tracing down from input points, etc?

Thanks for any advice

  RolfRolles     March 14, 2008 01:28.15 CDT
If we're talking about bindiffing and not straight auditing, my advice (as the former author of BinDiff) is to use the "HTML report" feature for all pairs of changed binaries.  Do this and you'll have a nice summary of all changes at the same time without having to flip back and forth between 15 instances of IDA.  The most critical changes tend to be (in my experience) in the files that have changed the most, e.g. the ones with the largest .HTML files, so look there first.  Also, always use symbols if they're available to enhance the quality of the results.

(Disclaimer:  my implementation of the HTML output in v1.7-v1.99 was terribly inefficient; not sure if this changed in v2.0.)

If we're talking about just reversing large binaries, you'll have to ask a more specific question.

  rman     March 20, 2008 11:03.17 CDT
So I guess a specific example would help.  Lets just talk about the specifics of MS08-015.  In this particular update 17 files were altered, and the patch itself was somewhere around 13mb.  Changes were all over the place so the html output of the diff for the just one of the files is around 6 megs, so pretty unweidy.

With a vulnerability like this, where details are limited, is there a "good" approach besides just sitting down and hammering away at the diff deadlisting until something looks interesting and then fire up the debugger?

Often times a problem I seem to have is I find the problem/vulnerability, but its very deep in the calltree, the graphs are basically unreadable from all the edges, and I just get lost.

Could anyone tell me how they went through this specific set of patches?  Im not interested in the details of the vulnerability (unless you're giving :)) but the process used to go through the discovery/reversing.

Thanks,

  daniellewis     March 20, 2008 21:17.21 CDT
Discovery is exactly that.  One can reverse engineer a program to it's most simple form and still not understand it.

For my purposes, automatically reducing algorithms to their simplest unobfuscated form is sufficient, so I only rarely actually analyze a program.

I shall hope you're not doing this to exploit the asleep.

For folks looking to understand things, remember that you don't need to know the whole program just the part that you're studying.  Find and start from that point, and work your way out as far as you need to.  Use a debugger if you need to know the state of something so you can avoid studying things outside your interest that cause that state.  Once you know what's going on the smaller scale you'll begin to build enough localized context to do what you need.  Keep that in mind, and it'll save you time.

Note: Registration is required to post to the forums.

There are 31,328 total registered users.


Recently Created Topics
[help] Unpacking VMP...
Mar/12
Reverse Engineering ...
Jul/06
let 'IDAPython' impo...
Sep/24
set 'IDAPython' as t...
Sep/24
GuessType return une...
Sep/20
About retrieving the...
Sep/07
How to find specific...
Aug/15
How to get data depe...
Jul/07
Identify RVA data in...
May/06
Question about memor...
Dec/12


Recent Forum Posts
Finding the procedur...
rolEYder
Question about debbu...
rolEYder
Identify RVA data in...
sohlow
let 'IDAPython' impo...
sohlow
How to find specific...
hackgreti
Problem with ollydbg
sh3dow
How can I write olly...
sh3dow
New LoadMAP plugin v...
mefisto...
Intel pin in loaded ...
djnemo
OOP_RE tool available?
Bl4ckm4n


Recent Blog Entries
halsten
Mar/14
Breaking IonCUBE VM

oleavr
Oct/24
Anatomy of a code tracer

hasherezade
Sep/24
IAT Patcher - new tool for ...

oleavr
Aug/27
CryptoShark: code tracer ba...

oleavr
Jun/25
Build a debugger in 5 minutes

More ...


Recent Blog Comments
nieo on:
Mar/22
IAT Patcher - new tool for ...

djnemo on:
Nov/17
Kernel debugger vs user mod...

acel on:
Nov/14
Kernel debugger vs user mod...

pedram on:
Dec/21
frida.github.io: scriptable...

capadleman on:
Jun/19
Using NtCreateThreadEx for ...

More ...


Imagery
SoySauce Blueprint
Jun 6, 2008

[+] expand

View Gallery (11) / Submit