Or maybe I just spent too much time in OllyDbg at a young age to notice.
Or maybe I just spent too much time in OllyDbg at a young age to notice.
the lower you go, the less context you have about the author's intent. with too-clever code it's easy to miss the forest for the trees.
e.g. it usually works fine to fix spelling errors at word level, but less well to restructure complex sentances without larger context.
I don't know if you've ever had that experience in your OllyDbg-using days, but did you ever try to analyse software that was using some form of hashing function, or cryptography (ECDSA, for instance) with OllyDbg, without knowing what it was? The idea is kind of like that. While it's easy to get a concrete idea of what that block of code is doing (feed it an ASCII string and some memory structures, it spits gobledygook out), it's not so easy to look at it and conclude "Ha! This implements AES-CBC!" without some strong intuition or experience.
If I understand the application really well often I don't need to do the first step, but it can be a handy shortcut.
So, yeah, specifying an architecture may be easier than debugging a routine but discovering the "hole" in the architecture can be twice as hard as specifying it.
Yes. Because if you have to use a debugger to understand a piece of code (your own or someone else's), the author has already failed. Good code can be read and understood without any additional tools.