在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文件中简单注入代码,实现在启动前弹窗

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

文章插图

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

文章插图

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

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

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

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

文章插图
【在PE文件中简单注入代码,实现在启动前弹窗】

    经验总结扩展阅读