1.OD浮点漏洞
01014031 DB2D 37400101 fld tbyte ptr [1014037]
01014037 FFFF ??? ; 未知命令
01014039 FFFF ??? ; 未知命令
0101403B FFFF ??? ; 未知命令
0101403D FFFF ??? ; 未知命令
0101403F 3D 40E80000 cmp eax, 0E840
关于这个漏洞的详细资料请见:http://www.unpack.cn/viewthread.php?tid=7985&extra=page%3D2
由于Themida对这个ANTI代码没有校验,所以用UE打开,转到EP下面一点的位置,把(FF FF FF FF FF FF FF FF 3D 40)中任意的东西随便改一改,然后另存为就可以了。
虽然这个ANTI是Themida首先使用的,但最先的不一定就是最好的,看看我们的高手是怎样做的:
003E00BE FFFF ??? ; 未知命令
003E00C0 FFFF ??? ; 未知命令
003E00C2 FFFF ??? ; 未知命令
003E00C4 FFFF ??? ; 未知命令
003E00C6 3D 400C71FF cmp eax,FF710C40
003E00CB F0:DB2D BE003E00 lock fld tbyte ptr ds:[3E00BE] ; 不允许锁定前缀
怎么样,比Themida的帅吧。
2.HeapMagic
∵这个Anti方法目前还未见公开。
∴这个Anti方法目前只有提出这个名的才说的清楚。
下断GetFileSize,再断VirtualAlloc,搞清楚壳把kernel32.dll放那了。之后断lstrcmpiA,看到壳在比较内核名,查找不顺眼的驱动,但我们断这里仅仅懒的跟kernel32.dll的填充过程。现在我们CTRL+G到刚才找到的kernel32.dll的存放位置,然后CTRL+B(64 A1 18 00 00 00 8B 40 30 0F B6 40 02 C3)也就是IsDebuggerPresent,下断,返回到虚拟机里。
0124C272 68 497AE669 push 69E67A49;回到这里
0124C277 ^ E9 91E4FFFF jmp 0124A70D
这里要是再往下走就回不来了,但我们知道Themida的虚拟机再走完前是不会飞的,所以这里存在问题,把这两行NOP掉或直接改EPI到0124C27C,不用担心VM没自校验的。
0124C27C 68 CCB8D94A push 4AD9B8CC
0124C281 ^ E9 87E4FFFF jmp 0124A70D
之后就和原来没啥大区别了,也许因为速度的原因吧,这里不VM,不插垃圾代码,也不变代码。
代码段内存写入断点:
01263D72 F3:A4 rep movs byte ptr es:[edi], byte ptr>
01263D74 C685 C5183509 5>mov byte ptr [ebp+93518C5], 56
01263D7B 68 396D1FD4 push D41F6D39
01263D80 FFB5 E11C3509 push dword ptr [ebp+9351CE1]
01263D86 8D85 C2784209 lea eax, [ebp+94278C2]
01263D8C FFD0 call eax
然后看教程,特征码定位:
0126CB87 8B9D 71023509 mov ebx, [ebp+9350271]
0126CB8D 8B0B mov ecx, [ebx]
0126CB8F 83F9 00 cmp ecx, 0
0126CB92 0F84 D80A0000 je 0126D670
0126CB98 50 push eax
0126CB99 51 push ecx
0126CB9A 60 pushad
0126CB9B 33C0 xor eax, eax
......
原来老大都写过了,我就不粘了,详细资料见《精华7》。
下面到关键了,我们知道Themida加的东西是有水印的,不知道Themida的作者看了这个记事本会有啥感想哪?
下载地址:
http://rapidshare.de/files/37340618/NOTEPAD.rar.html 或 http://www.unpack.cn/viewthread.php?tid=7985&extra=page%3D2
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!