1、检测程序时候加壳了,如果加壳就必须先去壳。
2、去壳后需要猜测程序员采用的是什么编程语言,编程语言有:java/c/c++/c#/vb/VC++等等。
3、猜测到程序员使用的语言后根据编程语言进行汇编,汇编需要考虑到语言中的语法问题,即使是同种语言,一种命令有多种说法,汇编成功率在20%左右。
4、汇编成功后基本就已经到反编译的顶端了,要从汇编程序翻译成源码可能性为1%。
首先了解一下概念,exe程序只是WIN下PE格式的可执行文件的一种,而所谓的计算机执行的代码只是一串二进制数
,跟数据没区别,当CS,EIP指向哪,哪里就是程序,而汇编语言之所以叫最底层的语言,是因为,
汇编的每一个语法,都应对了一串二进制的指令,这也就是
的原理,所以
NO1.一、
反编译
exe程序
就是
把
exe
还原为汇编语言吗?,这句话,不能叫还原,应该叫解释,“解释”的东西,没还原的那么逼真,比如,在汇编
源程序
中所有的标号和注释,进行编译后,变成二进制可执行文件后,在反汇编,标号就变成数字了,而注释更是没了.....
二、除了
还原为
汇编语言,还能
反编译为
其他
高级语言
吗?不能,高级语言的语法是建立在大量的计算机
二进制代码
之上的,比如你C语言随便调用一个子函数,到了二进制中,他是先压栈,参数(编译后参数从右往左压,每个语言还不一样),然后就是call
子函数,子函数运行后,他还要清理堆栈,所以你一个句简单的高级语言,其实蕴含了大量的代码,而高级语言编译后的程序,就脱离了他的开发环境,楼上说的会引起你误会,Java的中间码,可以用他自带的反编译工具,因为Java不是
编译器
,而是
解释器
,所以他不编译,只是解释他的中间码
NO2.所有的exe都可以反汇编,但是你要注意,不只exe这种pe格式,linux下可执行文件是elf,所以你在反汇编的时候,要注意可执行文件的文件的头,而早期的DOS只是纯二进制代码,没有
头文件
,这个很重要,你要反汇编什么格式,就要选择相应的工具
NO3
.exe反汇编,当然是OD,不过,我对OD不熟悉,好像他只支持WIN下的反汇编
1、点击“开始”菜单——选择“运行”。
2、在d出的运行框中输入“cmd”——选择“确定”。
3、然后就d出MS-Dos窗口。
4、接着记住CHM文件的路径,我是放在“F:\”根目录下。
5、接着新建一个文件夹,我这里取名为“checkout”,还有记住你的文件夹路径,我是放在“F:\”根目录下。
6、然后在命令行中输入“hh -decompile F:\checkout F:\checkout.chm”——按回车即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)