Stumbled into this post after many years of not logging on to lowyat forum (and I was crazy bored from work). Just a couple of comments based on what I remember (and forgive me if you already know this). I used to do this as a hobby. But these days job and family have taken priority.
1. Nice to know ODA exists. In the past we usually used IDA (from Hex Rays). It might be an overkill for what you're doing, but since they have a free version now, it could be something you'd like to explore as part of your RE tools. It have very neat features especially the FLIRT libraries for compiler identification.
2. If you're reversing an EXE compiled from HLL, compilers usually add a stub. So the entry point you see from the PE header is not the one that points to your actual main(), or WinMain() for Windows apps. But if you're reversing an EXE built in assembly then of course the compiler stub doesn't exist.
3. PUSH adds the value to stack, POP removes it from stack to the selected register. PUSHing it's a typical Microsoft way of passing function arguments. And within the function, the arguments are accessed using reference to ESP. I think Borland (if it still exists) used a different method, but I don't remember the details now.
How to disassemble an executable?
Jul 7 2021, 02:29 PM
Quote

0.0195sec
0.98
6 queries
GZIP Disabled