论坛里一个Crackme的疑惑
本帖最后由 yakov 于 2020-12-31 15:36 编辑因为原贴时间比较久,所以我新开一个帖子询问。原来的帖子:
https://www.52pojie.cn/thread-264393-6-1.html
https://www.52pojie.cn/thread-403484-1-1.html
这两个贴子中,都没有提到一个地方,就是这个crackme,如果用od打开,则运行后不会显示,打开后再attach则没关系,但是不容易跟踪到最前面的NAG:
0042F784 .6A 00 push0x0
0042F786 .B9A0F74200 mov ecx,Acid_bur.0042F7A0 ; "hello you have to kill me!"
0042F78B . BA BCF74200 movedx,Acid_bur.0042F7BC ;"Welcome to this Newbies Crackme made by ACiD BuRN "
0042F790 .A1480A4300 mov eax,dword ptr ds:
0042F795 . 8B00 mov eax,dwordptr ds:
0042F797 .E8 D4A9FFFFcallAcid_bur.0042A170 ;这个call里似乎有检测
0042F79C .C3 ret
把这些全部nop掉,NAG窗口消失,而且不显示问题也消失了,应该检测就在上面:0042F797处。
跟进0042F797处和Call:
0042A170 /$ 55 push ebp
0042A171 |. 8BEC mov ebp,esp
0042A173 |. 83C4 F4 add esp,-0xC
0042A176 |. 53 push ebx
0042A177 |. 56 push esi
0042A178 |. 57 push edi
0042A179 |. 8BF9 mov edi,ecx
0042A17B |. 8BF2 mov esi,edx
0042A17D |. 8BD8 mov ebx,eax
0042A17F |. E8 7CB4FDFF call<jmp.&user32.GetActiveWindow> ;
0042A184 |. 8945 F8 mov ,eax ; OD打开调试时这里为0,如果attach则这里已经跳过了
0042A187 |. 33C0 xor eax,eax
0042A189 |. E8 12A0FFFF callAcid_bur.004241A0 ;这里是进程枚举
0042A18E |. 8945 F4 mov ,eax
0042A191 |. 33C0 xor eax,eax
0042A193 |. 55 push ebp
0042A194 |. 68 D0A14200 pushAcid_bur.0042A1D
00042A199 |. 64:FF30 push dword ptrfs:
0042A19C |. 64:8920 mov dword ptrfs:,esp
0042A19F |. 8B45 08 mov eax,
0042A1A2 |. 50 push eax ; /Style
0042A1A3 |. 57 push edi ; |Title
0042A1A4 |. 56 push esi ; |Text
0042A1A5 |. 8B43 24 mov eax,dword ptrds: ; |
0042A1A8 |. 50 push eax ; |hOwner
0042A1A9 |. E8 FAB5FDFF call<jmp.&user32.MessageBoxA> ; \MessageBoxA
这里就是最开始的NAG!虽然我找到了地方,也能通过NOP避开,但是不明白为什么用OD打开调试时,窗口就不显示,而且MessageBox的代码是运行了,也都不显示。这里虽然有检测进程,似乎并没有进行什么判断,也没有分支,所以特发贴请教,如果弄清楚了原理,或许会对我们检测OD,或者反反检测有点小帮助,如果有朋友回复将非常感谢! 本帖最后由 yakov 于 2021-1-1 20:32 编辑
我继续跟踪了几次,最后发现,这个消息框其实是显示了的,只是没有弹窗到前面,也没有显示在任务栏,在OD里调试显示时很容易给忽略掉,然后往往关闭OD,或者重启OD。只要切换下窗口,就能看到那个消息框了,点击OK以后,主窗口随后就能显示。
虽然那个函数里枚举了进程,其实并没有任何anti代码。
虽然没有人回复,有不少朋友访问,还是感谢。
页:
[1]