|
|
|
|
|
by ldarby
1063 days ago
|
|
You just need to understand assembly. Maybe there are books that can help, I'm not aware of any, but to get started I'd recommend taking a binary of any open source software (preferably a non-optimised build, or just your own hello world with some loops etc), run it in a debugger, and step through each assembly instruction at a time and figure out what it's doing, with the corresponding source code. Eventually you may be able to do this without needing the source code, which is the goal. I think this is about the same effort as learning a new language (spoken, not programming), i.e. it'll take months of being immersed in it to get good at it. On the other hand, maybe your binary can be decompiled to source code (e.g. CFR can decompile java classes, I've used that a bit but haven't checked if that's useful for Android apps). |
|
Maybe this was bad advice, this approach is like trying to learn a spoken language by listening to a recording and looking up each word at a time. Probably it'd be better to get a deep understanding of how CPUs work in general, I can recommend the book Computer Organization and Design by Hennessy and Patterson for this. I agree with the other commenter that 15 years is more realistic so maybe just start by getting a 4 year degree in CompSci (and that book will probably be required reading).