获得的新知识: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指令,要补充相对入口点地址 。
文章插图
将代码注入这个程序
【在PE文件中简单注入代码,实现在启动前弹窗】用x32dbg查messagebox地址是0x76D160660 。程序入口点为0x00401140 。shellcode入口点设置为0x00401030
文章插图
文章插图
文章插图
用wenhex写入shellcode
文章插图
再把程序入口点修改了
文章插图
最后 , 完美运行
文章插图
推荐阅读
- 文件管理工具“三剑客” #Everything #SpaceSniffer #Clover
- 邮政投诉-中国邮政投诉网站
- 从 C# 崩溃异常 中研究页堆布局
- .Net WebApi 中的 FromBody FromForm FromQuery FromHeader FromRoute
- oracle中的行转列,列转行
- 锅炉排污率一般为多少 蒸汽锅炉排污率%
- vue3中pinia的使用总结
- 中国十大历史名城 中国历史名城排名
- 怎么在火山小视频赚钱赚钱教程(抖音火山版是怎么赚钱)
- 第一篇 TTD 专题 :C# 那些短命线程都在干什么?