上星期XX丢过来要去自检。就有了以上文章.(听说有三个人都放弃,偶也没有多大信心) 首先偶对这软件不熟。不过大概地分析一下后也略之一二该软件的检证部份应是在DLL里面的吧。因为偶没有分析.疑问:该软件的身份验证偶没有说错的话应是在 DLL里。但主程序对DLL有检验。所以要破解他就要改DLL。你可别说破解是用欺骗的方式来完成或者内存补丁(因为DLL是动态加载有可以地址都不同的。所以放出内存补丁是不行的)。因此同样你修改了那个广告连接的HTM也会倒至不上线的结果费话偶不说了。 说下分析: 一开始偶还以为会对那网址做检证。因此直接下内存读写。可惜不是又听说你们说跟MD5有关。我相信你们的话。又去下断MD5。结果还是不是 就这样转了个弯。什么都没有。气愤ING!不跟你们的思路跟下去。换个思路广告网址不能变?那我改关健CALL里总可以吧?于是修改后再导入不上线。这就 100%证实会自检DLL了。当然用PEID只能看到MD5加密算法。MD5加密算法来检验的偶也见过。之前MD5断下的都于自检DLL的无关。所以判断应是很简单的判断。 下断CreateFileA ----------------------------------------------------------------------------------------------------------------------------- 00420F95 |. 6A 00 push 0 00420F97 |. FF15 044B4200 call dword ptr [<&ole32.CoInitialize>>; ole32.CoInitialize 00420F9D |. 68 F8E84200 push 0042E8F8 ; /Arg1 = 0042E8F8 ASCII "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\amnzexio.tmp" 00420FA2 |. E8 B9FDFFFF call 00420D60 ; \PcShare.00420D60 00420FA7 |. 83C4 04 add esp, 4 00420FAA |. 85C0 test eax, eax 00420FAC |. 0F84 37020000 je 004211E9 00420FB2 |. 68 F8E84200 push 0042E8F8 ; /FileName = "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\amnzexio.tmp" 00420FB7 |. FF15 5C414200 call dword ptr [<&KERNEL32.LoadLibrar>; \LoadLibraryA 00420FBD |. 85C0 test eax, eax 00420FBF |. A3 F4E84200 mov dword ptr [42E8F4], eax 00420FC4 |. 0F84 1F020000 je 004211E9 00420FCA |. 8B35 60414200 mov esi, dword ptr [<&KERNEL32.GetPr>; KERNEL32.GetProcAddress 00420FD0 |. 33C9 xor ecx, ecx 00420FD2 |. 894D E9 mov dword ptr [ebp-17], ecx 00420FD5 |. 8D55 E8 lea edx, dword ptr [ebp-18] 00420FD8 |. 894D ED mov dword ptr [ebp-13], ecx 00420FDB |. 52 push edx ; /ProcNameOrOrdinal 00420FDC |. 50 push eax ; |hModule 00420FDD |. 884D F1 mov byte ptr [ebp-F], cl ; | 00420FE0 |. C645 E8 50 mov byte ptr [ebp-18], 50 ; | 00420FE4 |. C645 E9 73 mov byte ptr [ebp-17], 73 ; | 00420FE8 |. C645 EA 31 mov byte ptr [ebp-16], 31 ; | 00420FEC |. FFD6 call esi ; \GetProcAddress 00420FEE |. 8B0D F4E84200 mov ecx, dword ptr [42E8F4] ; amnzexio.00D80000 00420FF4 |. A3 E0E84200 mov dword ptr [42E8E0], eax 00420FF9 |. 8D45 E8 lea eax, dword ptr [ebp-18] 00420FFC |. C645 EA 32 mov byte ptr [ebp-16], 32 00421000 |. 50 push eax ; /ProcNameOrOrdinal 00421001 |. 51 push ecx ; |hModule => 00D80000 (amnzexio) 00421002 |. FFD6 call esi ; \GetProcAddress 00421004 |. A3 E4E84200 mov dword ptr [42E8E4], eax 00421009 |. A1 F4E84200 mov eax, dword ptr [42E8F4] 0042100E |. 8D55 E8 lea edx, dword ptr [ebp-18] 00421011 |. C645 EA 33 mov byte ptr [ebp-16], 33 00421015 |. 52 push edx ; /ProcNameOrOrdinal 00421016 |. 50 push eax ; |hModule => 00D80000 (amnzexio) 00421017 |. FFD6 call esi ; \GetProcAddress 00421019 |. 8B15 F4E84200 mov edx, dword ptr [42E8F4] ; amnzexio.00D80000 0042101F |. 8D4D E8 lea ecx, dword ptr [ebp-18] 00421022 |. 51 push ecx ; /ProcNameOrOrdinal 00421023 |. 52 push edx ; |hModule => 00D80000 (amnzexio) 00421024 |. A3 E8E84200 mov dword ptr [42E8E8], eax ; | 00421029 |. C645 EA 34 mov byte ptr [ebp-16], 34 ; | 0042102D |. FFD6 call esi ; \GetProcAddress 0042102F |. 8B0D F4E84200 mov ecx, dword ptr [42E8F4] ; amnzexio.00D80000 00421035 |. A3 ECE84200 mov dword ptr [42E8EC], eax 0042103A |. 8D45 E8 lea eax, dword ptr [ebp-18] 0042103D |. C645 EA 35 mov byte ptr [ebp-16], 35 00421041 |. 50 push eax ; /ProcNameOrOrdinal 00421042 |. 51 push ecx ; |hModule => 00D80000 (amnzexio) 00421043 |. FFD6 call esi ; \GetProcAddress 00421045 |. 8B15 FCEA4200 mov edx, dword ptr [42EAFC] 0042104B |. 8B35 F8EA4200 mov esi, dword ptr [42EAF8] ; PcShare.00454D48 00421051 |. A3 F0E84200 mov dword ptr [42E8F0], eax 00421056 |. 33FF xor edi, edi 00421058 |. 32C9 xor cl, cl 0042105A |. 33C0 xor eax, eax 0042105C |. 3BD7 cmp edx, edi 0042105E |. 8955 E4 mov dword ptr [ebp-1C], edx 00421061 |. 76 0D jbe short 00421070 00421063 |> 320C30 /xor cl, byte ptr [eax+esi] 00421066 |. 40 |inc eax 00421067 |. 3BC2 |cmp eax, edx 00421069 |.^ 72 F8 \jb short 00421063 0042106B |. 80F9 C5 cmp cl, 0C5 0042106E |. 74 06 je short 00421076 00421070 |> 893D E0E84200 mov dword ptr [42E8E0], edi 00421076 |> 57 push edi ; /Arg1 00421077 |. 8D8D D8FAFFFF lea ecx, dword ptr [ebp-528] ; | 0042107D |. E8 8E01FFFF call 00411210 ; \PcShare.00411210 00421082 |. 8D8D D8FAFFFF lea ecx, dword ptr [ebp-528] 00421088 |. 897D FC mov dword ptr [ebp-4], edi 0042108B |. E8 3E070000 call <jmp.&MFC42.#2514> 00421090 |. 83F8 01 cmp eax, 1 00421093 |. 74 0B je short 004210A0 -------------------------------------------------------------------------------------------------------------------------- 从上来可以看出。以下这段就是检验DLL的啦 :) 00421045 |. 8B15 FCEA4200 mov edx, dword ptr [42EAFC] 0042104B |. 8B35 F8EA4200 mov esi, dword ptr [42EAF8] ; PcShare.00454D48 00421051 |. A3 F0E84200 mov dword ptr [42E8F0], eax 00421056 |. 33FF xor edi, edi 00421058 |. 32C9 xor cl, cl 0042105A |. 33C0 xor eax, eax 0042105C |. 3BD7 cmp edx, edi 0042105E |. 8955 E4 mov dword ptr [ebp-1C], edx 00421061 |. 76 0D jbe short 00421070 00421063 |> 320C30 /xor cl, byte ptr [eax+esi] 00421066 |. 40 |inc eax 00421067 |. 3BC2 |cmp eax, edx 00421069 |.^ 72 F8 \jb short 00421063 0042106B |. 80F9 C5 cmp cl, 0C5 ;关健处 拿冰雨改了地址的来看这里应把C5改为A5 0042106E |. 74 06 je short 00421076 --------------------------------------------------------------------------------------------------------------------------- 等等还没有完. 查找所有变量: 参考位于 PcShare:.text 到常量 C5 地址 反汇编 注释 00408F05 cmp cl, 0C5 0040EDF8 cmp cl, 0C5 0040F73E cmp cl, 0C5 0040F80E cmp cl, 0C5 00410DCB cmp cl, 0C5 00412CEA cmp cl, 0C5 00412D4E cmp cl, 0C5 00412F64 cmp cl, 0C5 00413107 cmp cl, 0C5 00413462 cmp cl, 0C5 0041389A cmp cl, 0C5 0041390F cmp cl, 0C5 0042106B cmp cl, 0C5 管它这么多。都改为A5 ---------------------------------------------------------------------------------------------------------------------------- 修改后还不能上线。因为还有一自检。怎么找第二个自检。有第一次步了。下一步当然容易得多啦。
用W32dsm反汇编主程序。查找42EAF8 为什么要查这句跟据这一句 0042104B |. 8B35 F8EA4200 mov esi, dword ptr [42EAF8]
好。你会发现再有自检。查找全有变量0D 把CMP CL,0D的就改了就可以了 同样。偶改为63测试。OK |