yakov 发表于 2020-12-31 15:27

论坛里一个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:27

本帖最后由 yakov 于 2021-1-1 20:32 编辑

我继续跟踪了几次,最后发现,这个消息框其实是显示了的,只是没有弹窗到前面,也没有显示在任务栏,在OD里调试显示时很容易给忽略掉,然后往往关闭OD,或者重启OD。只要切换下窗口,就能看到那个消息框了,点击OK以后,主窗口随后就能显示。

虽然那个函数里枚举了进程,其实并没有任何anti代码。

虽然没有人回复,有不少朋友访问,还是感谢。

页: [1]
查看完整版本: 论坛里一个Crackme的疑惑