Windows PE变形练手2-开发一套自己的PE嵌入模板

PE嵌入模板

    编写一段代码,生成一个已经处理过重定位信息,同时所有的内容都在代码段里,并且没有导入表的PE程序,把这个程序嵌入到其他PE的相关位置,能够独立的运行,接下来是整理了2个模板,一个是HelloWorld的,另一个是通用模板LoadLibrary的模板。

    开发环境masm32和vs2012,相关环境搭建我之前整理过[ http://blog.csdn.net/u013761036/article/details/52186683 ];

直接C++的话貌似不行,我用vs2015本地创建了一个空的项目,默认优化全开:

还是会有kernel32.dll。

接下来是模板1,功能是所有的东西都在一个独立的模块,弹出对话框,同时处理了全局变量的重定位问题。模板如下[代码是仿照Windows PE 权威指南,但是有些地方已经改过了,书上代码在我本地跑有问题,再获取Kernel32.dll地址的时候并不能成功得到地址。那个函数我已经重写了]:

;----------------------------------------
;补丁代码
;本段代码使用了API函数地址动态获取以及重定位技术
;程序功能:弹出对话框
;作者:Thinker
;开发日期:2017.4.30
;开发测试环境:vs2012+masm32、Win7 X64
;----------------------------------------
 
.386
.model flat,stdcall
option casemap:none
 
include windows.inc
 
;注意,此处不静态包含引入任何其他动态链接库,包括Kernell32.dll
 
_ProtoGetProcAddress typedef proto :dword,:dword
_ProtoLoadLibrary    typedef proto :dword
_ApiGetProcAddress   typedef ptr _ProtoGetProcAddress
_ApiLoadLibrary      typedef ptr _ProtoLoadLibrary
 
;----------------------------------------
;补丁代码中引入的其他动态链接库函数的声明
;----------------------------------------
 
_ProtoMessageBox typedef proto :dword,:dword,:dword,:dword
_ApiMessageBox   typedef ptr _ProtoMessageBox
 
 
;被添加到目标文件的代码从这里开始,到APPEND_CODE_END处结束
.code
jmp _NewEntry
 
;以下内容为两个重要函数名
;几乎所有补丁都必须使用
szGetProcAddr db 'GetProcAddress',0
szLoadLib     db 'LoadLibraryA',0
 
;----------------------------------------
;补丁代码中其他全局变量的定义
;----------------------------------------
 
szUser32Dll   db 'user32.dll',0
szMessageBox  db 'MessageBoxA',0
szHello       db 'HelloWorldPE',0
;------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值