delphi制作资源文件(二)一个A.exe释放出B.exe 并且修改b.exe变量的值
首先,创建一个工程
edit1.txt:=XXXXX
xxxxx 就是我们A.exe程序需要修改的值,写成XXXXX 是便于我们好查找它的位置。
打卡,winhex.exe 查找资源文件 的XXXX 位置
地址在 0004DD8C 转换成10 进制就是318844 (这个很关键,记下来)
在工程目录下创建两个文件,
然后运行bat文件 会生成一个AAA.res
我们开始新建一个工程来释放资源文件
添加一下代码
var
Form1: TForm1;
const OFFSET_DUANKOU = 318844;//这个就根据你自己的值来定。
implementation
{$R *.dfm}
{$R AAA.res}
procedure TForm1.Button1Click(Sender: TObject);
var
WriteBuff, ziyuanzhizhen: PChar;
ziyuanweizhi: HRSRC;
ziyuandaxiao, BytesWritten: Longword;
shujuchulijubing: THandle;
shenqingzhizhen: THandle;
duankou:string;
//现在我们开始begin
BEGIN
duankou:=trim(Edit1.Text); //端口为edit4的文字
ziyuanweizhi := FindResource(HInstance, 'AAA', RT_RCDATA); //资源指针为寻找到的资源'fuwuduan'(就是我先说的标识符)
ziyuandaxiao := SizeofResource(HInstance, ziyuanweizhi);//资源大小
shujuchulijubing := LoadResource(HInstance, ziyuanweizhi); //数据处理句炳
ziyuanzhizhen := LockResource(shujuchulijubing);//资源指针
shenqingzhizhen := CreateFile(pchar('test.exe'), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
WriteFile(shenqingzhizhen, ziyuanzhizhen^, ziyuandaxiao, BytesWritten, nil);//写文件
Sleep(100);
SetFilePointer(shenqingzhizhen, OFFSET_DUANKOU, nil, FILE_BEGIN);//重定位指针
WriteBuff := PChar(duankou + StringOfChar(#0, 5 - Length(duankou)));//要写的数据
WriteFile(shenqingzhizhen, WriteBuff^, 5, BytesWritten, nil);//再次修改文件
CloseHandle(shenqingzhizhen);//关闭资源
end;
并且将AAA.res 文件放在释放资源工程下
运行结果
以上来源于网络
源码下载:http://blog.csdn.net/qq_14876677/article/details/51760709 //非常好的一篇文章。
文中的意思就是把A.exe制作为一个.res的资源文件,然后写一个生成器.exe 修改 res 资源文件中的字符,最后导出成为exe。就例如;木马生成器一个道理。