我之前听说过"反编译"这个词,现在对它的工作原理非常好奇。
大概明白它的工作原理是逆向工程一个应用程序以查看它使用了哪些功能,但除此之外我并不知道太多。
我还听说过"反汇编器"这个术语,那么反汇编器和反编译器有什么区别呢?
综上所述,我的问题是:反编译的过程具体涉及什么?通常如何进行?它的复杂程度如何?它能够生成精确的代码吗?反编译器和反汇编器之间有什么区别?
我之前听说过"反编译"这个词,现在对它的工作原理非常好奇。
大概明白它的工作原理是逆向工程一个应用程序以查看它使用了哪些功能,但除此之外我并不知道太多。
我还听说过"反汇编器"这个术语,那么反汇编器和反编译器有什么区别呢?
综上所述,我的问题是:反编译的过程具体涉及什么?通常如何进行?它的复杂程度如何?它能够生成精确的代码吗?反编译器和反汇编器之间有什么区别?
int twotimes(int a) {
return a * 2;
}
_twotimes:
SHL EAX, 1
RET
(第一行只是标签而不是实际指令,SHL
执行左移操作,相当于快速乘以2,RET
表示函数已完成)。在结果二进制中,它看起来像这样:
08 6A CF 45 37 1A