Reverse engineering guide for beginners: Methodology and tools
I'd love to know more about disassembly. I've recently had more and more reason to go deeper into applications I'm running as dependencies. A few issues I've found and fixed just by using strace to get an idea of the system calls.<p>There was one thing in particular where I knew there was a jump somewhere (if some_length < some_width) that caused bad outputs. I was playing around looking at registers etc in gdb while following along with a disassembled version of the code, but it was impossible to get any idea where to start.<p>I wanted something that could give me a few seconds worth of samples of where the instruction register was spending its time as a starting point, but couldn't find any such tool (linux).<p>Within my control:<p><pre><code>    - giving input files to explicitly set unique numbers to watch out for
    - giving inputs that would generate bad output numbers only in the bad code path
    - giving inputs to force a load of jumps down the bad or good code paths
</code></pre>
Does anyone have any advice on how you might approach such a situation?