作者:open上星期XX丢过来要去自检。就有了以上文章.(听说有三个人都放弃,偶也没有多大信心)首先偶对这软件不熟。不过大概地分析一下后也略之一二该软件的检证部份应是在DLL里面的吧。因为偶没有分析.疑问:该软件的身份验证偶没有说错的话应是在 DLL里。但主程序对DLL有检验。所以要破解他就要改DLL。你可别说破解是用欺骗的方式来完成或者内存补丁(因为DLL是动态加载有可以地址都不同的。所以放出内存补丁是不行的)。因此同样你修改了那个广告连接的HTM也会倒至不上线的结果费话偶不说了。说下分析:一开始偶还以为会对那网址做检证。因此直接下内存读写。可惜不是又听说你们说跟MD5有关。我相信你们的话。又去下断MD5。结果还是不是就这样转了个弯。什么都没有。气愤ING!不跟你们的思路跟下去。换个思路广告网址不能变?那我改关健CALL里总可以吧?于是修改后再导入不上线。这就 100%证实会自检DLL了。当然用PEID只能看到MD5加密算法。MD5加密算法来检验的偶也见过。之前MD5断下的都于自检DLL的无关。所以判断应是很简单的判断。下断CreateFileA-----------------------------------------------------------------------------------------------------------------------------00420F95 |. 6A 00 push 000420F97 |. FF15 044B4200 call dword ptr [<&ole32.CoInitialize>>; ole32.CoInitialize00420F9D |. 68 F8E84200 push 0042E8F8 ; /Arg1 = 0042E8F8 ASCII "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\amnzexio.tmp"00420FA2 |. E8 B9FDFFFF call 00420D60 ; \PcShare.00420D6000420FA7 |. 83C4 04 add esp, 400420FAA |. 85C0 test eax, eax00420FAC |. 0F84 37020000 je 004211E900420FB2 |. 68 F8E84200 push 0042E8F8 ; /FileName = "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\amnzexio.tmp"00420FB7 |. FF15 5C414200 call dword ptr [<&KERNEL32.LoadLibrar>; \LoadLibraryA00420FBD |. 85C0 test eax, eax00420FBF |. A3 F4E84200 mov dword ptr [42E8F4], eax00420FC4 |. 0F84 1F020000 je 004211E900420FCA |. 8B35 60414200 mov esi, dword ptr [<&KERNEL32.GetPr>; KERNEL32.GetProcAddress00420FD0 |. 33C9 xor ecx, ecx00420FD2 |. 894D E9 mov dword ptr [ebp-17], ecx00420FD5 |. 8D55 E8 lea edx, dword ptr [ebp-18]00420FD8 |. 894D ED mov dword ptr [ebp-13], ecx00420FDB |. 52 push edx ; /ProcNameOrOrdinal00420FDC |. 50 push eax ; |hModule00420FDD |. 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 ; \GetProcAddress00420FEE |. 8B0D F4E84200 mov ecx, dword ptr [42E8F4] ; amnzexio.00D8000000420FF4 |. A3 E0E84200 mov dword ptr [42E8E0], eax00420FF9 |. 8D45 E8 lea eax, dword ptr [ebp-18]00420FFC |. C645 EA 32 mov byte ptr [ebp-16], 3200421000 |. 50 push eax ; /ProcNameOrOrdinal00421001 |. 51 push ecx ; |hModule => 00D80000 (amnzexio)00421002 |. FFD6 call esi ; \GetProcAddress00421004 |. A3 E4E84200 mov dword ptr [42E8E4], eax00421009 |. 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], 3300421015 |. 52 push edx ; /ProcNameOrOrdinal00421016 |. 50 push eax ; |hModule => 00D80000 (amnzexio)00421017 |. FFD6 call esi ; \GetProcAddress00421019 |. 8B15 F4E84200 mov edx, dword ptr [42E8F4] ; amnzexio.00D800000042101F |. 8D4D E8 lea ecx, dword ptr [ebp-18]00421022 |. 51 push ecx ; /ProcNameOrOrdinal00421023 |. 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 ; \GetProcAddress0042102F |. 8B0D F4E84200 mov ecx, dword ptr [42E8F4] ; amnzexio.00D8000000421035 |. A3 ECE84200 mov dword ptr [42E8EC], eax0042103A |. 8D45 E8 lea eax, dword ptr [ebp-18]0042103D |. C645 EA 35 mov byte ptr [ebp-16], 3500421041 |. 50 push eax ; /ProcNameOrOrdinal00421042 |. 51 push ecx ; |hModule => 00D80000 (amnzexio)00421043 |. FFD6 call esi ; \GetProcAddress00421045 |. 8B15 FCEA4200 mov edx, dword ptr [42EAFC]0042104B |. 8B35 F8EA4200 mov esi, dword ptr [42EAF8] ; PcShare.00454D4800421051 |. A3 F0E84200 mov dword ptr [42E8F0], eax00421056 |. 33FF xor edi, edi00421058 |. 32C9 xor cl, cl0042105A |. 33C0 xor eax, eax0042105C |. 3BD7 cmp edx, edi0042105E |. 8955 E4 mov dword ptr [ebp-1C], edx00421061 |. 76 0D jbe short 0042107000421063 |> 320C30 /xor cl, byte ptr [eax esi]00421066 |. 40 |inc eax00421067 |. 3BC2 |cmp eax, edx00421069 |.^ 72 F8 \jb short 004210630042106B |. 80F9 C5 cmp cl, 0C50042106E |. 74 06 je short 0042107600421070 |> 893D E0E84200 mov dword ptr [42E8E0], edi00421076 |> 57 push edi ; /Arg100421077 |. 8D8D D8FAFFFF lea ecx, dword ptr [ebp-528] ; |0042107D |. E8 8E01FFFF call 00411210 ; \PcShare.0041121000421082 |. 8D8D D8FAFFFF lea ecx, dword ptr [ebp-528]00421088 |. 897D FC mov dword ptr [ebp-4], edi0042108B |. E8 3E070000 call <jmp.&MFC42.#2514>00421090 |. 83F8 01 cmp eax, 100421093 |. 74 0B je short 004210A0--------------------------------------------------------------------------------------------------------------------------从上来可以看出。以下这段就是检验DLL的啦 :)00421045 |. 8B15 FCEA4200 mov edx, dword ptr [42EAFC]0042104B |. 8B35 F8EA4200 mov esi, dword ptr [42EAF8] ; PcShare.00454D4800421051 |. A3 F0E84200 mov dword ptr [42E8F0], eax00421056 |. 33FF xor edi, edi00421058 |. 32C9 xor cl, cl0042105A |. 33C0 xor eax, eax0042105C |. 3BD7 cmp edx, edi0042105E |. 8955 E4 mov dword ptr [ebp-1C], edx00421061 |. 76 0D jbe short 0042107000421063 |> 320C30 /xor cl, byte ptr [eax esi]00421066 |. 40 |inc eax00421067 |. 3BC2 |cmp eax, edx00421069 |.^ 72 F8 \jb short 004210630042106B |. 80F9 C5 cmp cl, 0C5 ;关健处 拿冰雨改了地址的来看这里应把C5改为A50042106E |. 74 06 je short 00421076---------------------------------------------------------------------------------------------------------------------------等等还没有完. 查找所有变量:参考位于 PcShare:.text 到常量 C5地址 反汇编 注释00408F05 cmp cl, 0C50040EDF8 cmp cl, 0C50040F73E cmp cl, 0C50040F80E cmp cl, 0C500410DCB cmp cl, 0C500412CEA cmp cl, 0C500412D4E cmp cl, 0C500412F64 cmp cl, 0C500413107 cmp cl, 0C500413462 cmp cl, 0C50041389A cmp cl, 0C50041390F cmp cl, 0C50042106B cmp cl, 0C5管它这么多。都改为A5----------------------------------------------------------------------------------------------------------------------------修改后还不能上线。因为还有一自检。怎么找第二个自检。有第一次步了。下一步当然容易得多啦。用W32dsm反汇编主程序。查找42EAF8 为什么要查这句跟据这一句0042104B |. 8B35 F8EA4200 mov esi, dword ptr [42EAF8]好。你会发现再有自检。查找全有变量0D 把CMP CL,0D的就改了就可以了 同样。偶改为63测试。OK