-
-
[推荐]无输入表做免杀
-
发表于:
2010-8-29 17:28
7473
-
前几天在研究PE文件的时候,在一个论坛上看到了一篇文章,构建最小PE文件,这篇文章写的太好了,我看用在免杀方面有一定的参考价值,所以就贴出来给大家看看,多学学别人的思路,对自己很有帮助!
现在杀毒软件太多了,每种杀毒软件所检测的东西都不一样,但我想大概都有这个功能就是检测输入表里的函数,看有没有可疑的吧~~这只是我的猜想~~
在下面的这个程序中,你看不到MessageBox之类的函数,但却弹出一个对话框,做的很好!!
源代码如下
MinPe.asm
.386
.model flat,stdcall
option casemap:none
include windows.inc
.data
szUser32 db 'user32.dll',0
szMsg db 'Hello World!',0
szTitle db 'MiniPE',0
.code
GetApi proc hModule,nIndex
mov esi,hModule
mov edx,nIndex
add esi,[(IMAGE_DOS_HEADER ptr [esi]).e_lfanew]
assume esi:ptr IMAGE_NT_HEADERS
mov esi,[esi].OptionalHeader.DataDirectory.VirtualAddress ;数据块的起始RVA
add esi,eax
assume esi:ptr IMAGE_EXPORT_DIRECTORY
sub edx,[esi].nBase
rol edx,2
mov edi,[esi].AddressOfFunctions ;指向函数地址数组
add edi,eax
add edi,edx
mov edx,dword ptr [edi]
add eax,edx
ret
GetApi endp
WinMain proc
LOCAL hModule
assume fs:nothing
mov eax,fs:[30h]
mov eax,[eax+0Ch]
mov eax,[eax+0Ch]
mov eax,[eax]
mov eax,[eax]
mov eax,[eax+18h]
mov hModule,eax
invoke GetApi,hModule,245h
.if eax
push offset szUser32
call eax
.if eax
mov hModule,eax
invoke GetApi,hModule,1DDh
.if eax
push MB_OK
push offset szTitle
push offset szMsg
push 0
call eax
.endif
.endif
.endif
ret
WinMain endp
end WinMain
上面程序在RadASM中编译运行得到一个弹出对话框
但用PEID查看输入表却没有MessageBoXA函数,是不是很奇妙,其实原理很简单,如果有什么不清楚,我推荐大家学习看雪最近出的专题版中有一个讲病毒的,里面就有这处技术,好的,就到这里,谢谢大家,学好汇编真的很好,可以朝很多方向发展,免杀,逆向工程,病毒分析等等,不如还不会汇编的话,就好好学习学习吧,对自己会有用的~~~
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!