用fi查壳为armadillo 4.0 <glue>通过bp OpenMutexA 和he LoadLibraryA 一番折腾,终于到了传说中的Magic jmp 如下
01085CFA 50 push eax
01085CFB FF15 BC620A01 call dword ptr [10A62BC] ; kernel32.LoadLibraryA
01085D01 8B0D AC400B01 mov ecx, dword ptr [10B40AC]
01085D07 89040E mov dword ptr [esi+ecx], eax
01085D0A A1 AC400B01 mov eax, dword ptr [10B40AC]
01085D0F 391C06 cmp dword ptr [esi+eax], ebx
01085D12 0F84 2F010000 je 01085E47 ; 这里修改为jmp
01085D18 33C9 xor ecx, ecx
01085D1A 8B07 mov eax, dword ptr [edi]
01085D1C 3918 cmp dword ptr [eax], ebx
01085D1E 74 06 je short 01085D26
01085D20 41 inc ecx
01085D21 83C0 0C add eax, 0C
01085D24 ^ EB F6 jmp short 01085D1C
01085D26 8BD9 mov ebx, ecx
修改后到下面
01085E36 8D1C06 lea ebx, dword ptr [esi+eax]
01085E39 B9 98FA0A01 mov ecx, 10AFA98
01085E3E E8 EC390000 call 0108982F
01085E43 3103 xor dword ptr [ebx], eax
01085E45 33DB xor ebx, ebx
01085E47 83C7 0C add edi, 0C
01085E4A 89BD 78FDFFFF mov dword ptr [ebp-288], edi
01085E50 83C6 04 add esi, 4
01085E53 395F FC cmp dword ptr [edi-4], ebx
01085E56 ^ 0F85 49FEFFFF jnz 01085CA5
01085E5C EB 03 jmp short 01085E61 ; 到这里下断01085E5E D6 salc
01085E5F D6 salc
01085E60 8F ??? ; 未知命令
01085E61 8B0D 6C8F0B01 mov ecx, dword ptr [10B8F6C]
01085E67 3BCB cmp ecx, ebx
01085E69 74 13 je short 01085E7E
01085E6B 8B01 mov eax, dword ptr [ecx]
F9运行,撤销上面修改JMP那个地方,
现在问题来了,无论我是BP GetCurrentThreadId还是ALT+M在00401000上下断点都会出现
红色代码,停在一个异常处,
0109B091 E8 B0360000 call 0109E746
0109B096 8B0D F49F0B01 mov ecx, dword ptr [10B9FF4]
0109B09C 8B0CB1 mov ecx, dword ptr [ecx+esi*4] ; 程序停在这里,ecx为0,esi也为0,所以不能网下面走了
0109B09F 33C8 xor ecx, eax
0109B0A1 338D A0D5FFFF xor ecx, dword ptr [ebp-2A60]
0109B0A7 51 push ecx
0109B0A8 FFB5 D8D5FFFF push dword ptr [ebp-2A28]
0109B0AE E8 47310000 call 0109E1FA
0109B0B3 83C4 0C add esp, 0C
0109B0B6 8B85 A4D5FFFF mov eax, dword ptr [ebp-2A5C]
0109B0BC 40 inc eax
0109B0BD 8985 A4D5FFFF mov dword ptr [ebp-2A5C], eax
0109B0C3 8B85 D8D5FFFF mov eax, dword ptr [ebp-2A28]
我这上面的步骤是按论坛里的前辈的文章,不知道是我那个环节出来问题还是别的什么,请大家指导!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)