ollydbg调试和修改exe等文件内部指令,使用IDA生成稍显易读的逆向代码。两者结合效果比较好。前者用于运行调试,找到目标指令的位置,后者则是逆向前期用来分析
exe文件
内部结构的工具。
怎么改,不能一言蔽之。大概的原理可以告诉你
使用ollydbg,运行,点击菜单栏的打开,选择你的exe文件,运行,找到
main函数
的位置,设置断点,单步运行,知道找到你想找的指令的位置,更改该指令,注意要保证指令的总体大小不变,比如说原先该条指令的大小是4个字节,那么你可以使用4个NOP指令代替,大小不变,但是使用6个NOP或者3个NOP指令,总体大小就不同了,exe文件内部指令的
相对地址
都变了。
即最后的exe文件大小要不变,不然会损坏exe文件。。。
最后保存修改的内容。
不知道你有没有个大概的印象,
反汇编
本来就很耗时耗力,需要耐心和经验,还得看你的需求。
你可以上“
看雪论坛
”搜索相关的教程。
因为你修改的时候可能改变了原来程序的长度,结果导致整个程序数据的相对位置的变动,比如本来一个字节的数据EE,你修改的时候不注意改为FFF,整个程序长度发生变化,程序中数据位置也发生变化,但是指令的寻址地址没有变化,这样就导致很严重的错误,造成程序无法运行。还有可能就是你修改的地方时比较关键的部分。exe程序是不能随便改的,要修改先要备份。
只能反汇编,这种软件有很多的,如ollydbg,Win32Dasm等,可以把exe反向转成汇编代码。
也可以使用反向工程的软件,此类软件用起来都非常复杂,可以把一个exe反向转成一个代码工程。
一般情况下除了net、vb和java写的程序可以反编译成原始代码之外,c、c++、delphi等写的程序是无法反成可读的有效原始代码的。
首先你得清楚,微软的exe可执行文件(即PE文件,有PE规范定义)的特征,才能使用不同的反编译软件对exe进行反编译。
如今,exe一般分托管代码和非托管代码两类(托管代码是由C#等语言生成的NET运行时库支持运行的中间代码,不是CPU芯片可直接执行的二进制机器码;而非托管代码是CPU芯片看执行的机器码)
非托管代码反编译后,其实就是简单的将二进制机器码用汇编表示,所以是汇编语言。
托管代码反编译,好的反编译器直接将中间语言字节码反编译成高级语言代码,如C#
------------------------------------------------------
另外,在什么平台运行的exe正确反编译(需要选择正确的芯片结构)为同平台的汇编语言。
如嵌入式ARM芯片上运行的Win CE系统上的exe就应当正确反编译为ARM汇编
x86的就应当反编译为x86汇编。
VB 可以编译为两种格式:
Native /本地代码:可以用通用的反汇编工具反汇编,或部分反编译至 C 代码;
P-code /伪代码:目前尚没有 P-code 格式 EXE 的反汇编工具。
以上就是关于用什么软件可以修改exe,dll文件内的反汇编程序,如何修改,请高手指教全部的内容,包括:用什么软件可以修改exe,dll文件内的反汇编程序,如何修改,请高手指教、为什么一个可执行程序EXE在反汇编下修改后就变成一个不能运行的程序了、如何将.exe的可执行程序反编译成为C语言代码程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)