改文件我觉得不如dll注入来的优雅。
VirtualAllocEx申请内存,
WriteProcessMemory将你的装载dll的shellcode写过去,
CreateRemoteThread创建线程,指向你的shellcode。
简单愉快,完全不需要改OEP,更不用搜索00。
如果你那么固执要用你的静态补丁方法,
其实我觉得你也不需要用什么易语言了,直接把你用OD修改的DLL,保存并替代原文件,
就可以了,何须那么麻烦,当然除非你这个DLL还是EXE有什么特殊的地方不能这样。
易语言用汇编比较蛋疼,而且我对易语言也不太了解,
如果你那么固执要用编程来解决,我就大概提一下思路。
一、搜00,找个足够大的空的地方
二、通过读PE结构获取OEP,不懂的话请自行百度PE结构。
三、OEP改成你步骤一找到的空地,
这一块涉及到文件虚拟地址对齐问题(好像是这么叫的),比较复杂,而且我也不太清楚,
交给你自己解决。
四、空地里写入你的shellcode。你的shellcode有个问题,call LoadLibrary用的是相对偏移跳 转,当你这句汇编的位置483AFE,那么你就会call到别的地方去了,可以改成如下代码:
mov eax,LoadLibrary地址
call eax
五、shellcode末尾jmp回原OEP,同样涉及对齐问题,自行研究吧。