在PE文件中简单注入代码,实现在启动前弹窗

获得的新知识:1、kernel32.dll,user32.dll,ntdll.dll等一些dll在同一个PC环境下的映射到虚拟内存基址是一样的 。2、在win8以上系统上,更改PE文件的入口点要大于SizeOfHeaders(在可选文件头中),否则会报错无法运行 。

在PE文件中简单注入代码,实现在启动前弹窗

文章插图
1、实现原理PE可选文件头有一个AddressOfEntryPoint , 更改这个值指向自己代码,执行完自己代码再跳转到原来入口点 。
2、实验过程1、字节的代码shellcode:6A006A006A00E8________E9_________调用messagebox过程,压栈调用
在PE文件中简单注入代码,实现在启动前弹窗

文章插图
这里用了IAT表,为了简单起见直接使用user32.dll中messagebox的地址e8指令是call指令,后面要补充相对messagbox的地址,e9是jmp指令,要补充相对入口点地址 。
在PE文件中简单注入代码,实现在启动前弹窗

文章插图
将代码注入这个程序
【在PE文件中简单注入代码,实现在启动前弹窗】用x32dbg查messagebox地址是0x76D160660 。程序入口点为0x00401140 。shellcode入口点设置为0x00401030
在PE文件中简单注入代码,实现在启动前弹窗

文章插图

在PE文件中简单注入代码,实现在启动前弹窗

文章插图

在PE文件中简单注入代码,实现在启动前弹窗

文章插图
用wenhex写入shellcode
在PE文件中简单注入代码,实现在启动前弹窗

文章插图
再把程序入口点修改了
在PE文件中简单注入代码,实现在启动前弹窗

文章插图
最后 , 完美运行
在PE文件中简单注入代码,实现在启动前弹窗

文章插图

    推荐阅读