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

文章插图
1、实现原理PE可选文件头有一个AddressOfEntryPoint , 更改这个值指向自己代码 , 执行完自己代码再跳转到原来入口点 。
2、实验过程1、字节的代码shellcode:
6A006A006A00E8________E9_________
调用messagebox过程 , 压栈调用
文章插图
这里用了IAT表 , 为了简单起见直接使用user32.dll中messagebox的地址e8指令是call指令 , 后面要补充相对messagbox的地址 , e9是jmp指令 , 要补充相对入口点地址 。

文章插图
将代码注入这个程序
用x32dbg查messagebox地址是0x76D160660 。程序入口点为0x00401140 。shellcode入口点设置为0x00401030

文章插图

文章插图

文章插图
用wenhex写入shellcode

文章插图
再把程序入口点修改了

文章插图
最后 , 完美运行

文章插图
【在PE文件中简单注入代码,实现在启动前弹窗】
经验总结扩展阅读
- 子宫癌能吃红枣吗
- 衢州火车站和高铁站在一起吗
- 文件管理工具“三剑客” #Everything #SpaceSniffer #Clover
- 中度贫血会引起失眠吗
- 高徳地图在英国能不能用
- 感冒了发汗后怎么办
- 女性尿酸低怎么调理
- 感冒心跳加速正常吗
- 汨罗江在哪个省哪个县
- 稀土是什么东西啊