2我们知道一旦DLL函数被导入EXE文件的输入表,则EXE文件启动时会自动执行一遍该DLL的_启动子程序 函数,
3、所以我们可以把需要执行的指令放在该函数里面,然后记得在该函数的 公开 选项打上勾,然后编译。
4、接下来,我们打开LordPE,如下图
然后在d出的对话框中选择要导入DLL函数的程序然后点击新d出的窗口的目录,如下图
5、然后点 输入表 右边的 标题是 ...的按钮(截不了图了)
然后随便选择一项数据,右键,如下图
在d出的窗口中填写DLL名,及API名(填_启动子程序)就可以了,然后点一下 + 按钮
6、如果d出一个信息框,点 是 就可以,添加完成之后点 确定 ,然后一路保存就可以了,不过发布程序的时候记得带上那个DLL
相关资源:易语言DLL永久注入EXE_易语言dll注入exe并且运行-其它代码类资源...
首先在DLL里新建一个窗口然后在DLL里声明一个公开的函数
函数内容如下
_____________________________________________
.版本 2
.子程序 载入_某某窗口, 整数型, 公开, 成功返回被调用窗口的句柄
载入 (某某窗口, , 假)
.如果真 (是否已创建 (某某窗口))
返回 (某某窗口.取窗口句柄 ())
.如果真结束
返回 (0)
_____________________________________________
现在说说为什么要这样,个人愚见
首先如果你想调用DLL里面的窗口,则必须通过其公布的函数,且由于DLL是编译后的程序,
不能支持窗口类的 *** 作。
改文件我觉得不如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,同样涉及对齐问题,自行研究吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)