标题尝试用studyPE和x32dbg修改.exe文件
首先,准备一个exe文件,这里我使用自己用c++编写的exe文件,在程序中调用了LoadLibraryA函数动态加载dll文件,并使用GetProcAddress函数查询dll文件中的函数。采用这样的动态加载是为了简化试验过程,通常情况下,由于程序启动时会有地址重定位,因此,修改非动态加载的地址会比较繁琐。下面是源程序,编译后生成的程序就是我们的试验目标exe程序:
下面,启动x32dbg.exe,并点文件->打开,打开上面生成的exe文件;如图:
然后,点击窗口上的“符号”,并点选程序的主线程:
双击主线程会切换到cpu视图:
注意到上图下面的红色框,$1000是虚拟偏移地址,#400文件偏移地址,有了这两个地址后就有可能有针对的修改。但在x32dbg中难于修改,因为程序在壳中运行,地址都经过了重定位。我们需要另外的软件studyPE来进行静态修改。
再次,注意到上方的函数调用,如图:
第一条call上的一条指令push theconsoletest2.EF210C,这是传入函数参数,类似theconsoletest2.EF210C这样的文件名+点号+地址的是静态的参数,应是预先设定好值的;第二条call上有两条push指令,
且其中一条静态的,另一条push eax是动态的,eax应存有上一条函数的返回值,这两条push都是给函数传入参数。
然后查看push指令后的参数,这是一个地址,分析参数的偏移地址:分别为210C和211C,这是虚拟偏移地址。
打开studyPE程序,载入exe文件,如图:
下面,我们用studyPE来进行静态修改:
点击红色框的按钮来查找相应地址处的值:可以替换成其他的,也可以添加另外的。
我只是初初学会,这里只是试验,不是大佬,离高手还有一段距离,谢谢读文。