Speaker 2
terms that you're mentioning like KPT and also Stowaway which are reminded now it
Speaker 4
will be in the show notes for those who want to look back at that and see how can they handle threads in
Speaker 2
reverse engineering. Yeah it will be interesting to see some example of how that actually looks because you said that this kind of can
Speaker 4
tint the results and whatnot if you maybe
Speaker 2
like there's data dependency between the two but I still try to visualize and understand so I'm referring back to the video that you have published on YouTube which I will also link to the reverse engineering ego program and you kind of build this block diagram of the different steps and you write what's happening there what you guess and so on. So affecting the results by sharing some data or do a calculation return and then on top of that that all makes sense. Do commands just pop up randomly in what's happening now and you kind of try to paint that in the relevant context once you're reverse engineering
Speaker 1
something with multi-threads. Actually I think the best way to visualize it is not to try to think about the program as it is running but imagine that instead of reading assembly code you are reading the source code of a Go program. I think you are not going to dispute the fact that if you receive some Go project from a friend or a coworker and you know nothing about this project and you have to read this source code then this source code is going to be much easier to understand if the program is just a single thread that is doing a single thing right. If you receive this program that as soon as it begins it launches three different threads that are supposed to do different things at the same time and figuring out exactly what the program is going to be doing is going to be I think much more difficult. Now imagine the same thing but instead of receiving proper Go code then you would receive Go code where all the variable names have been wiped and all the variables are named A, B and C etc. So you cannot even use the function names or you cannot even use the variable names to try to understand what the program is supposed to do and imagine that you have no comments inside the code as well. This is basically what reverse engineers have to do. You
Speaker 2
don't always have to imagine that.
Speaker 1
Yeah of course. Yeah this might be a real life for a lot of people out there, shouting to them I guess but this is exactly what reverse engineering is like you receive some source code whether it is assembly or a high level code that does a bit of difference because assembly is hard to read but basically it's going to be the same thing that you have to go through right. You receive some code you have to understand what it does and the more complex this code is the more sophisticated its operations are then the harder time you'll need to have to understand exactly what is going on in