2

I'm new in reversing and I'd like a lot to learn about it. I have little to no knowledge about it. Is still worth to learn x86 Assembly? Since almost everything these days work on x64 architecture. What would be your advice for someone who's starting out just like me? Some books, guides, tips, what to learn and what not, and why... (I'm manly interested in game hacking, I also have an intermediate level of Python and C#).

Thanks!

1
3

I'm starting in RE too (since beggining of 2020), and I thought I could put here what I've learned so far. Maybe it might be of help.

So first of all, you need Assembly knowledges. You asked if it's still worth to learn x86 because there is x64 now. Well, that's a thing I learned too. x64 is just an extension of x86. The real name for x64 is actually x86_64. I learned Intel 8086 Assembly (university) with the help of EMU8086 (old program that emulates 8086 processor in which you can assembly Assembly programs and debug them - I'd recommend you to use MASM or another one to get real feeling of it, because you can write a program on the emulator like 2 MOVs and an INT and it will run, without sections and whatever --> and that's wrong, it just allows you not to write those things and it will for you, but then you don't learn everything).

If you learn 8086 Assembly (which is a 16-bit processor), it should give you many insights of how modern programs work. Won't give you everything though. Will help with the instructions as some didn't change much (maybe more things that I don't know), but won't help you make a program in Assembly. For that you need to learn more deeply about 32-bit and maybe 64-bit Assembly programming (something I haven't done yet) - as a start, you don't have direct access to hardware in 32/64 bits as you do in 16-bit.

Then you need a Disassembler (I love IDA - there's a free version: IDA 7.0 Freeware). Code some simple (or not?) programs in C and then disassemble them and see how they were made. If you want to go more than that, find simple programs on the Internet, compile them without looking and try to translate to C. That helped me. I had programs I had coded for university classes that I didn't remember anymore, so I used those.

You might also want to learn about how a PE executable is made, if you'll work on Windows. I'm just learning about that. I'm reading a book called "Portable Executable File Format - A Reverse Engineer View". No idea if it's good or not, but it's telling me cool things about how they're made, like headers and sections, which was something on my list to learn. If you want to change a program, like adding or removing functionality, you may need to mess with the header - unless you just patch some bytes on it without changing the size of the file in any way. Then there's no need to mess with the header (I've patched a file like that a month ago as the first and only time for now - was AWSOME!!!).

You could also learn Binary Exploitation, but not sure if that's what you want. If you do want this, I could recommend you an YouTube channel as a beggining to it: LiveOverflow, with this playlist: https://www.youtube.com/playlist?list=PLhixgUqwRTjxglIswKp9mpkfPNfHkzyeN. He has some more playlists on exploitation, by that way. That's applying old exploits though, but it's an introduction (was to me, at least, even though I stopped because I want to patch programs to improve them for now and not exploit them in real-time - that's after I learn how to patch, as it seems more advanced).

By the way, I wrote this in the order I did the things (except exploitation and learning about PE format, but the order I wrote it should have been the one I'd have used - too excited that I just started with the videos hahaha).

Of course, this is a begginer's answer. So a more "professional" answer probably is better. But I just wanted to say what I've done as a begginer's view of 2020 in learning RE, even if wrong in any (or more) aspects (please correct me if anything I said is wrong). Hope this helps in any way! This was big hahaha.

PS: I forgot something up there, but I'll put it here. You need to learn C... Maybe even BEFORE Assembly, like I did (university classes order). Go deep enough to go to pointers. See how that works. Make linked lists, for example. Or binary trees. Go to that level (do everything you need to learn before that, of course, but get to that). Then start Assembly and you shall see better what's happening behind the scenes when you make the programs you made to train on C.

EDIT: Since you said "game hacking", seems a good place to say it... PLEASE don't hack to the bad part. Make cool mods, or whatever you'd like to do (I love mods on games). But don't make them online or something, or if you do, don't put stupid options... On PS3, GTA 5 Online is awful. Being able to lower levels of others, take stuff from them (give them stuff too, but it's possible to take which is worse and I'd prefer I could do none in that case) - BAN accounts without authorization from Rockstar... That's, I don't even have a word... Don't get to that...

2
  • I really appreciate your comment, and I can see the enthusiasm you put into it, I hope you never lose that enthusiasm, because it shows that you enjoy it. Thanks for your answer and good luck in the future! @DADi590 – Sharki Sep 28 '20 at 15:48
  • 1
    I forgot on the day I wrote that thing, so I've put it in EDIT now. Hopefully you won't get to that as other people do... And in that case, you're very welcome. I love to see people modifying stuff (electronics and programming). That's amazing! Take Elasto Mania (2000 game). 2 local players at most. Aside from other stuff, they made the game online with moderators! --> ????? WTF. For me that's magical! And I'd love to know how to do the magic haha. If you'd like to do these kind of stuff too, hope you don't loose the entusiasm too! Thank you and to you too!! – DADi590 Sep 28 '20 at 20:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.