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。就例如;木马生成器一个道理。

posted @ 2017-05-18 12:01  stma  阅读(389)  评论(0)    收藏  举报