菜菜的去除ANTI的简单过程
00401C6D |. E8 321B0000 call <jmp.&KERNEL32.CreateToolhelp32Snap>; \CreateToolhelp32Snapshot
//////////////获取进程快照
00401C72 |. 3BC3 cmp eax,ebx
00401C74 |. 8945 F4 mov [local.3],eax
00401C77 75 07 jnz short CrackMe6.00401C80
00401C79 |. 53 push ebx ; /ExitCode => 0
00401C7A |. FF15 20404000 call dword ptr ds:[<&KERNEL32.ExitProces>; \ExitProcess
00401C80 |> 8D85 B4FEFFFF lea eax,[local.83]
这里开始获取进程信息 并判断是否为调式工具,如果是结束进程
00401C91 /0F84 A0000000 je CrackMe6.00401D37 /////////////// je---->nop
00401C97 |. |8B3D 18404000 mov edi,dword ptr ds:[<&KERNEL32.lstrcmpiA>] ; kernel32.lstrcmpiA
00401C9D |> |BE 20604000 /mov esi,CrackMe6.00406020
00401CA2 |> |8D85 D8FEFFFF |/lea eax,[local.74]
00401CA8 |. |56 ||push esi
00401CA9 |. |50 ||push eax
00401CAA |. |FFD7 ||call edi
00401CAC |. |85C0 ||test eax,eax
00401CAE |. |75 1B ||jnz short CrackMe6.00401CCB到////////////////////jnz---->jmp
00401CB0 |. |53 ||push ebx ; /ExitCode
00401CB1 |. |FFB5 BCFEFFFF ||push [local.81] ; |/ProcessId
00401CB7 |. |6A 01 ||push 1 ; ||Inheritable = TRUE
00401CB9 |. |68 FF0F1F00 ||push 1F0FFF ; ||Access = PROCESS_ALL_ACCESS
00401CBE |. |FF15 14404000 ||call dword ptr ds:[<&KERNEL32.OpenProcess>] ; |\OpenProcess
00401CC4 |. |50 ||push eax ; |hProcess
00401CC5 |. |FF15 10404000 ||call dword ptr ds:[<&KERNEL32.TerminateProcess>] ; \TerminateProcess ////////////强制结束调式器进程
00401CCB |> |83C6 0F ||add esi,0F
00401CCE |. |81FE 3D614000 ||cmp esi,CrackMe6.0040613D ; ASCII ".14f"
00401CD4 |.^|7C CC |\jl short CrackMe6.00401CA2
00401CD6 |. |8D85 D8FEFFFF |lea eax,[local.74]
00401CDC |. |68 B4614000 |push CrackMe6.004061B4 ; ASCII "explorer.exe"
00401CE1 |. |50 |push eax
00401CE2 |. |FFD7 |call edi
00401CE4 |. |85C0 |test eax,eax
00401CE6 |. |75 13 |jnz short CrackMe6.00401CFB
00401CE8 |. |FF45 FC |inc [local.1]
00401CEB |. |395D F8 |cmp [local.2],ebx
00401CEE |. |75 22 |jnz short CrackMe6.00401D12
00401CF0 |. |8B85 BCFEFFFF |mov eax,[local.81]
00401CF6 |. |8945 F8 |mov [local.2],eax
00401CF9 |. |EB 17 |jmp short CrackMe6.00401D12
00401CFB |> |FF15 0C404000 |call dword ptr ds:[<&KERNEL32.GetCurrentProcessId>] ; [GetCurrentProcessId
00401D01 |. |3985 BCFEFFFF |cmp [local.81],eax
00401D07 |. |75 09 |jnz short CrackMe6.00401D12
00401D09 |. |8B85 CCFEFFFF |mov eax,[local.77]
00401D0F |. |8945 F0 |mov [local.4],eax
00401D12 |> |8D85 B4FEFFFF |lea eax,[local.83]
00401D18 |. |50 |push eax ; /pProcessentry
00401D19 |. |FF75 F4 |push [local.3] ; |hSnapshot
00401D1C |. |E8 771A0000 |call <jmp.&KERNEL32.Process32Next> ; \Process32Next
00401D21 |. |85C0 |test eax,eax
00401D23 |.^|0F85 74FFFFFF \jnz CrackMe6.00401C9D
00401D29 |. |837D FC 01 cmp [local.1],1
00401D2D |75 08 jnz short CrackMe6.00401D37 //////////////jnz------->nop
00401D2F |. |8B45 F8 mov eax,[local.2]
00401D32 |. |3945 F0 cmp [local.4],eax
00401D35 |74 46 je short CrackMe6.00401D7D //////////////je--------->jmp
00401D37 |> \33C0 xor eax,eax
00401D39 |. 8D7D DD lea edi,dword ptr ss:[ebp-23]
00401D3C |. 885D DC mov byte ptr ss:[ebp-24],bl
00401D3F |. BE A8614000 mov esi,CrackMe6.004061A8 ; ASCII "@}lqUsfb`rr"
00401D44 |. AB stos dword ptr es:[edi]
00401D45 |. AB stos dword ptr es:[edi]
00401D46 |. AB stos dword ptr es:[edi]
00401D47 |. AB stos dword ptr es:[edi]
00401D48 |. 66:AB stos word ptr es:[edi]
00401D4A |. 56 push esi ; /s => "@}lqUsfb`rr"
00401D4B |. AA stos byte ptr es:[edi] ; |
00401D4C |. E8 75180000 call <jmp.&MSVCRT.strlen> ; \strlen
00401D51 |. 50 push eax
00401D52 |. 8D45 DC lea eax,[local.9]
00401D55 |. 50 push eax
00401D56 |. 56 push esi
00401D57 |. E8 26000000 call CrackMe6.00401D82
00401D5C |. 83C4 10 add esp,10
00401D5F |. 8D45 DC lea eax,[local.9]
00401D62 |. 50 push eax ; /ProcNameOrOrdinal
00401D63 |. 68 48614000 push CrackMe6.00406148 ; |/FileName = "Kernel32.dll"
00401D68 |. FF15 54404000 call dword ptr ds:[<&KERNEL32.LoadLibraryA>] ; |\LoadLibraryA
00401D6E |. 50 push eax ; |hModule
00401D6F |. FF15 00404000 call dword ptr ds:[<&KERNEL32.GetProcAddress>] ; \GetProcAddress
00401D75 |. 53 push ebx
00401D76 |. A3 A0634100 mov dword ptr ds:[4163A0],eax
00401D7B |. FFD0 call eax >>>>>>>>ExiteProcess
00401D7D |> 5F pop edi
00401D7E |. 5E pop esi
00401D7F |. 5B pop ebx
00401D80 |. C9 leave
----------------------
00402710 . 8B4424 04 mov eax,dword ptr ss:[esp+4]
00402714 . 3D 91060000 cmp eax,691
00402719 . 74 1C je short CrackMe6.00402737 ///////je------->nop
0040271B . 3D 92060000 cmp eax,692
00402720 . 74 15 je short CrackMe6.00402737 ///////je------>nop
00402722 . 3D 93060000 cmp eax,693
00402727 . 74 0E je short CrackMe6.00402737 ///////je------>nop
00402729 . 3D 94060000 cmp eax,694
0040272E . 74 07 je short CrackMe6.00402737 ///////je------->nop
00402730 . 3D 95060000 cmp eax,695
00402735 . 75 0F jnz short CrackMe6.00402746/////////je------>jmp
00402737 > 6A 00 push 0 ; /lParam = 0
00402739 . 6A 00 push 0 ; |wParam = 0
0040273B . 6A 10 push 10 ; |Message = WM_CLOSE
0040273D . FF71 20 push dword ptr ds:[ecx+20] ; |hWnd
00402740 . FF15 94424000 call dword ptr ds:[<&USER32.SendMessageA>] ; \SendMessageA
////////////向窗口发送退出消息
00402746 > 6A 01 push 1
00402748 . 58 pop eax
--------------------
00401FC2 . E8 13FEFFFF call CrackMe6.00401DDA ///////////////-------->crc校验过程
00401FC7 . 85C0 test eax,eax
00401FC9 /75 45 jnz short 3.00402010 //////////// jnz----------->jmp
00401FCB . |2045 DC and byte ptr ss:[ebp-24],al
00401FCE . |8D7D DD lea edi,dword ptr ss:[ebp-23]
00401FD1 . |AB stos dword ptr es:[edi]
00401FD2 . |AB stos dword ptr es:[edi]
00401FD3 . |AB stos dword ptr es:[edi]
00401FD4 . |AB stos dword ptr es:[edi]
00401FD5 . |66:AB stos word ptr es:[edi]
00401FD7 . |BE A8614000 mov esi,3.004061A8 ; ASCII "@}lqUsfb`rr"
00401FDC . |56 push esi ; /s => "@}lqUsfb`rr"
00401FDD . |AA stos byte ptr es:[edi] ; |
00401FDE . |E8 E3150000 call <jmp.&MSVCRT.strlen> ; \strlen
00401FE3 . |50 push eax
00401FE4 . |8D45 DC lea eax,dword ptr ss:[ebp-24]
00401FE7 . |50 push eax
00401FE8 . |56 push esi
00401FE9 . |E8 94FDFFFF call 3.00401D82
00401FEE . |83C4 10 add esp,10
00401FF1 . |8D45 DC lea eax,dword ptr ss:[ebp-24]
00401FF4 . |50 push eax ; /ProcNameOrOrdinal
00401FF5 . |68 48614000 push 3.00406148 ; |/FileName = "Kernel32.dll"
00401FFA . |FF15 54404000 call dword ptr ds:[<&KERNEL32.LoadLibrar>; |\LoadLibraryA
00402000 . |50 push eax ; |hModule
00402001 . |FF15 00404000 call dword ptr ds:[<&KERNEL32.GetProcAdd>; \GetProcAddress
00402007 . |6A 00 push 0
00402009 . |A3 A0634100 mov dword ptr ds:[4163A0],eax
0040200E . |FFD0 call eax ///////////////////////eax----> ExiteProcess
00402010 > \8B4D F4 mov ecx,dword ptr ss:[ebp-C]
00402013 . 6A 01 push 1
00402015 . 58 pop eax
00402016 . 5F pop edi
00402017 . 5E pop esi
00402018 . 5B pop ebx
00402019 . 64:890D 00000>mov dword ptr fs:[0],ecx
00402020 . C9 leave
好像算法过程用到SEH传递计算过程!
这个计算过程太长希望年前有高手能计算出结果!