源码免杀笔记
来源:互联网 发布:这个驸马有淘宝(重生) 编辑:程序博客网 时间:2024/04/30 15:27
各个杀毒软件查杀特点不一样,大致总结以下,API函数,字符串,代码段,资源段。免杀方法大致有如下几种手段,动态函数调用,延迟加载DLL,合并区段,字符串隐藏,删版权换版权,花指令,反调试等等细节,以上几种方法基本上过掉大部分杀软,当然有能力也可以自己改变程序的代码实现原来的功能。
1.动态函数调用
有两个函数是不能调用的,GetProcAddress,LoadLibrary。
杀毒软件如果查杀到API函数上,可以用动态函数调用解决。
typedef int (WINAPI *MessageBoxAT)
(
HWND hWnd,
LPCSTR lpText,
LPCSTR lpCaption,
UINT uType
);
MessageBoxAT pMessageBoxA= (MessageBoxAT)GetProcAddress(LoadLibrary("user32.dll"),"MessageBoxA");
2.字符串隐藏
利用数组来隐藏,字符串处理相对比较简单,隐藏的办法有很多,举出一种吧。
char name[]={'a','b','c','\0'};
name替换掉原来的字符串.
3.延迟加载DLL
源代码上加上,或者写成头文件加上也可以.
#pragma comment(linker, "/OPT:NOWIN98")
#pragma comment(lib, "DELAYIMP.LIB")
#pragma comment(linker, "/DELAYLOAD:WININET.dll")
#pragma comment(linker, "/DELAYLOAD:WS2_32.dll")
#pragma comment(linker, "/DELAYLOAD:PSAPI.DLL")
#pragma comment(linker, "/DELAYLOAD:GDI32.dll")
#pragma comment(linker, "/DELAYLOAD:ADVAPI32.dll")
#pragma comment(linker, "/DELAYLOAD:SHELL32.dll")
#pragma comment(linker, "/DELAYLOAD:WINMM.dll")
#pragma comment(linker, "/DELAYLOAD:USER32.dll")
#pragma comment(linker, "/DELAYLOAD:WTSAPI32.dll")
#pragma comment(linker, "/DELAYLOAD:AVICAP32.dll")
#pragma comment(linker, "/DELAYLOAD:SHLWAPI.dll")
#pragma comment(linker, "/DELAYLOAD:MSVFW32.dll")
#pragma comment(linker, "/DELAY:nobind")
#pragma comment(linker, "/DELAY:unload")
4.合并区段
把其他区段合并到一个区段里,以前这个方法还管用,可以试试,但最好不要加。
#pragma comment(linker, "/MERGE:.rdata=.data")//把rdata区段合并到data区段里
#pragma comment(linker, "/MERGE:.text=.data")//把text区段合并到data区段里
#pragma comment(linker, "/MERGE:.reloc=.data")//把reloc区段合并到data区段里
4 .删版权资源
有时对版权也查杀,可以换版权或者删除。
5.花指令
如果杀在代码段上可以加NOP来打乱程序的位置,一般不要加太多,有时也会查杀NOP。
__asm nop;
__asm nop;
__asm nop;
5.反调试
HKEY ck;
char strreg[] = {'S','O','F','T','W','A','R','E','\\','O','D','B','C','\0'};
if(ERROR_SUCCESS!=RegOpenKeyEx(HKEY_LOCAL_MACHINE,(LPCTSTR)strreg,0,KEY_ALL_ACCESS,&ck))
{
return 0;
}
定位到特征码后,看代码中的程序是否可以代码换位。
注意的细节:
定位360BD引擎的时候,找到入口点,填充入口点以上的代码,查杀,如果免杀,就说明在这一区段.
map文件定位:
用OD找代码的时候,有时上下没有参考,可以用map文件来帮助,在VC6.0中设置map文件,然后拿出来,用OD里面的一个插件loadmap,载入map,重新运行,就可以了.
- 源码免杀笔记
- 源码免杀笔记
- C++源码免杀小记
- 网络安全:WinPswLogger源码免杀
- 小七免杀 源码免杀培训班
- 源码免杀系列教程
- Metasploit笔记--免杀技巧
- 远控软件GHOST源码免杀
- gh0st3.6源码编译+++免杀教程
- 现在主流免杀是源码免杀
- 网络安全:远控源码免杀方法
- 网络安全:gh0st源码免杀ESET_NOD32
- 网络安全:gh0st源码免杀Kaspersky
- 网络安全:NC源码编译及免杀
- 现在主流免杀是源码免杀
- NC源码编译及免杀
- 源码免杀的一些心得
- 源码免杀-过启发式的思路
- C++学习资源
- 求大牛支援
- find和grep命令
- 背包问题
- telnetd for android
- 源码免杀笔记
- ICE在VC中的配置
- HDU 2896
- 线段树总结
- 用户接口设计一 设备驱动
- Android XML解析
- Spinner样式大全
- Java HashMap的使用
- STL中mem_fun和mem_fun_ref的用法 收藏