It is possible to convert machine code of software, to source code in high level language in which that software is written. From starting of softwares all over the world level even all scientists assumed that source code (i.e. programs or softwares written in high level language such as c, c++, java, vc#.net etc.) is converted into machine code by compiler is not possible to convert binary machine language back into high level language source code, but I say this is possible. Now here is that compiler first find errors mostly in starting, of syntax errors and others. Than error free from bugs source code is converted to object code and then linker and loader attaches library, that makes this object code to executable code ( i.e. machine language, that is understands only 0s and 1s or in other words numbers). Our scientists believed that this executable machine code can not be converted to reverse in source code that is in high level language in which this software (converted machine code) is written.
But I say that this is possible. I termed this as "Reverse Engineering".
From machine code to high level language source code.
I get it from here :- When I was in college in a subject "Micro processors", we did our practicals in 8085 micro processors programming. There was in big box 8085 was fixed, aside of this there was Hexa decimal number display for two digits of hexa code. And there is also a Hexa decimal keybords, labeled ( 0 1 2 3 4 5 6 7 8 9 A B C D E F ). Now to program in 8085 which understands only numbers, we need first build program in paper hard copy in assembly language. And in order to enter or type program in 8085 we enters hexa decimal code equivalent to that assembly language program. for example :-
machine code -- assembly code
8F MOVE A, AC (MOVE CONTENT OF REGISTER A TO ACCUMULATOR )
54 ADD AC, B ( ADD ACCUMULATOR VALUE TO CONTENT OF REGISTER B)
.
.
.
.
F6 MOVE AC, D ( MOVE ACCUMULATOR TO REGISTER D, Let it is answer that is received by end user).
If you remember a book "TSR through C" by kanentkar, and other deeply discovered and delved enough kanetkar's books for c programmers. There was some functions that works and operates with CPU registers, correct.
Now then compiler converts source code into object code.
I remember once I was working in visual studio in college, program displayed a message for some errors. And there was option for debugging in vc++ or something like that. I didn't understand that message and hit for debugging. That IDE moved me to file in editor have some columns, some for some non-understandable numbers and one for assembly commands. I asked one of my friend Rudra Rup Mitra, What are these dude. He said I don't know much about that, this is assembly language code, some numbers but didn't get delve into this. Because of that window I thought it may be that there is assembly language code and there equivalent machine code.
Now as in above listing, it is clear that machine code is equivalent to assembly code. i.e. we can write equivalent assembly code from its executable machine code. And from that we can convert from assembly code to high level source code. That is "Reverse Engineering". and for that there is "Decompiler".
Monday, May 8, 2023
Actual Reverse Engineering in Software Industries
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment