首页
社区
课程
招聘
[旧帖] 菜鸟暴打3条hardlock狗成功!分享收获! 0.00雪花
发表于: 2008-7-24 14:21 11064

[旧帖] 菜鸟暴打3条hardlock狗成功!分享收获! 0.00雪花

2008-7-24 14:21
11064
起初想玩破解还是很偶然的。7月上旬单位新买来3套国外软件,还带来一套试用版的。

可是一个软件只有一个狗,我们单位人多,非常的不方便。还有那套试用的居然拿来就是过期的。

不爽,决定破解他们。然后就是上网学习了,虽然大学时候还学过点IBM汇编和C51,悔当初没学好,现在都忘记了。碰到不知道的指令就百度 GOOGLE了。好在我这几个程序都没加壳。通过找字符串,然后JMP,试用软件和2带HARDLOCK狗的软件很好解(因为字符串很好找)。这里我就不多说了。就是找到字符串,上下找跳转,JE改JNZ,JNZ改JE,或者JMP暴力点算了。

这里重点讲破解一个噪音预测软件的破解。VC++写的 。不插沟提示找不到“hardlock狗,,请插入 ....”
运行的时候拔狗提示“找不到hardlock狗,,请插入”

找字符串,找到hardlock。出来hardlock.vxd这些东西,反正我目前是看不懂。
005585ED   . /0F85 0C000000 JNZ 复件_cna.005585FF
005585F3   . |C745 E8 C4FD6>MOV DWORD PTR SS:[EBP-18],复件_cna.0068FDC>;  \\.\hardlock.vxd
005585FA   . |E9 07000000   JMP 复件_cna.00558606
005585FF   > \C745 E8 D8FD6>MOV DWORD PTR SS:[EBP-18],复件_cna.0068FDD>;  \\.\fentedev
00558606   >  6A 00         PUSH 0                                   ; /hTemplateFile = NULL
00558608   .  6A 00         PUSH 0                                   ; |Attributes = 0
0055860A   .  6A 03         PUSH 3                                   ; |Mode = OPEN_EXISTING
0055860C   .  6A 00         PUSH 0                                   ; |pSecurity = NULL
0055860E   .  6A 03         PUSH 3                                   ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
00558610   .  68 000000C0   PUSH C0000000                            ; |Access = GENERIC_READ|GENERIC_WRITE
00558615   .  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]            ; |
00558618   .  50            PUSH EAX                                 ; |FileName
00558619   .  FF15 68E35D00 CALL DWORD PTR DS:[<&KERNEL32.CreateFile>; \CreateFileA
0055861F   .  A3 A4FD6800   MOV DWORD PTR DS:[68FDA4],EAX
00558624   .  833D A4FD6800>CMP DWORD PTR DS:[68FDA4],-1
0055862B   .  0F85 15000000 JNZ 复件_cna.00558646
00558631   .  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]

unicode和ANSII都找不到“hardlock狗,,请插入 ....”这句话,用bpx MessagerBoxA拦截的话都跑到ntdll或者user32空间去了。无法下手。想到了模拟狗。

hardlock狗,驱动是5.22版本的。读取狗的时候不管是HI-DUMP还是2007,读出来的DAT只有9K,BIN文件也只有9K。后来用HL  slove和mylock,制作好了。可是还是出现了“hardlock狗,,请插入 ....”,看来启动程序是过了,但是运行还是过不去。

放弃,还是走程序把。

F8走下去

005DDA7D  |.  50            PUSH EAX                                 ; /pStartupinfo
005DDA7E  |.  FF15 60E25D00 CALL DWORD PTR DS:[<&KERNEL32.GetStartup>; \GetStartupInfoA
005DDA84  |.  F645 D0 01    TEST BYTE PTR SS:[EBP-30],1
005DDA88  |.  74 11         JE SHORT 复件_cna.005DDA9B
005DDA8A  |.  0FB745 D4     MOVZX EAX,WORD PTR SS:[EBP-2C]
005DDA8E  |.  EB 0E         JMP SHORT 复件_cna.005DDA9E
005DDA90  |>  803E 20       /CMP BYTE PTR DS:[ESI],20
005DDA93  |.^ 76 D8         |JBE SHORT 复件_cna.005DDA6D
005DDA95  |.  46            |INC ESI
005DDA96  |.  8975 8C       |MOV DWORD PTR SS:[EBP-74],ESI
005DDA99  |.^ EB F5         \JMP SHORT 复件_cna.005DDA90
005DDA9B  |>  6A 0A         PUSH 0A
005DDA9D  |.  58            POP EAX
005DDA9E  |>  50            PUSH EAX                                 ; /Arg4
005DDA9F  |.  56            PUSH ESI                                 ; |Arg3
005DDAA0  |.  53            PUSH EBX                                 ; |Arg2
005DDAA1  |.  53            PUSH EBX                                 ; |/pModule
005DDAA2  |.  FF15 BCE25D00 CALL DWORD PTR DS:[<&KERNEL32.GetModuleH>; |\GetModuleHandleA
005DDAA8  |.  50            PUSH EAX                                 ; |Arg1
005DDAA9  |.  E8 6254E2FF   CALL 复件_cna.00402F10                     ; \复件_cna.00402F10
005DDAAE  |.  8945 98       MOV DWORD PTR SS:[EBP-68],EAX
005DDAB1  |.  50            PUSH EAX                                 ; /status
005DDAB2  |.  FF15 BCE45D00 CALL DWORD PTR DS:[<&MSVCRT.exit>]       ; \exit

这段代码在很多VC里都可以找到。这里有个CALL很关键CALL cna.00402F10,继续往下走就退出了。如果F8,直接出来“hardlock狗,,请插入 ....”,所以要跟进去。

继续F8,又来到关键地方。

0040321D  |> /8B47 02       |/MOV EAX,DWORD PTR DS:[EDI+2]
00403220  |. |85C0          ||TEST EAX,EAX
00403222  |. |74 09         ||JE SHORT 复件_cna.0040322D
00403224  |. |A1 400E6C00   ||MOV EAX,DWORD PTR DS:[6C0E40]
00403229  |. |85C0          ||TEST EAX,EAX
0040322B  |. |74 27         ||JE SHORT 复件_cna.00403254
0040322D  |> |66:8B07       ||MOV AX,WORD PTR DS:[EDI]
00403230  |. |66:8B4F FE    ||MOV CX,WORD PTR DS:[EDI-2]
00403234  |. |68 7CC46000   ||PUSH 复件_cna.0060C47C
00403239  |. |68 70C46000   ||PUSH 复件_cna.0060C470                   ;  ASCII "DATAKUSTIK"                          这个字符很特殊,和狗上字一样,是不是要开始读狗了呢?
0040323E  |. |50            ||PUSH EAX
0040323F  |. |51            ||PUSH ECX
00403240  |. |E8 FD141500   ||CALL 复件_cna.00554742               这个CALL比一般的CALL花费的时间要长,是不是读狗呢?还不好判断,继续
00403245  |. |8BF0          ||MOV ESI,EAX
00403247  |. |83C4 10       ||ADD ESP,10
0040324A  |. |66:85F6       ||TEST SI,SI
0040324D  |. |74 10         ||JE SHORT 复件_cna.0040325F   如果跳过去如何呢。
0040324F  |. |E8 67101500   ||CALL 复件_cna.005542BB    不跳的话就执行这句
00403254  |> |45            ||INC EBP                                       
00403255  |. |83C7 08       ||ADD EDI,8
00403258  |. |83FD 04       ||CMP EBP,4
0040325B  |.^\72 C0         |\JB SHORT 复件_cna.0040321D   返回到开始321D地方。再次执行
0040325D  |.  EB 18         |JMP SHORT 复件_cna.00403277
0040325F  |>  8B44EC 40     |MOV EAX,DWORD PTR SS:[ESP+EBP*8+40]
00403263  |.  85C0          |TEST EAX,EAX
00403265  |.  74 10         |JE SHORT 复件_cna.00403277
00403267  |.  6A 00         |PUSH 0
00403269  |.  891D 400E6C00 |MOV DWORD PTR DS:[6C0E40],EBX

经过跟踪,如果有狗,CALL完复件_cna.00554742 后JE SHORT 复件_cna.0040325F就跳了,如果没狗,那么就会从0040324F开始继续运行,然后跳回0040321D,再次执行 。没有狗的话会在这段代码循环4次,而且CALL 0044472这个时间都比较长,那么可以肯定这里就是读狗的地方了。

00554742  /$  55            PUSH EBP
00554743  |.  8BEC          MOV EBP,ESP
00554745  |.  83EC 14       SUB ESP,14
00554748  |.  53            PUSH EBX
00554749  |.  56            PUSH ESI
0055474A  |.  57            PUSH EDI
0055474B  |.  833D A8CE6800>CMP DWORD PTR DS:[68CEA8],0
00554752  |.  0F85 0A000000 JNZ cna32.00554762                                                                                           有狗没狗都是不跳,继续!
00554758  |.  C705 A8CE6800>MOV DWORD PTR DS:[68CEA8],cna32.0068CDA8
00554762  |>  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
00554767  |.  66:8B40 1C    MOV AX,WORD PTR DS:[EAX+1C]
0055476B  |.  66:8945 FC    MOV WORD PTR SS:[EBP-4],AX
0055476F  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
00554774  |.  8B40 34       MOV EAX,DWORD PTR DS:[EAX+34]
00554777  |.  8945 EC       MOV DWORD PTR SS:[EBP-14],EAX
0055477A  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
0055477F  |.  66:8B40 1E    MOV AX,WORD PTR DS:[EAX+1E]
00554783  |.  66:8945 F8    MOV WORD PTR SS:[EBP-8],AX
00554787  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
0055478C  |.  66:C740 06 00>MOV WORD PTR DS:[EAX+6],0
00554792  |.  66:8B45 0C    MOV AX,WORD PTR SS:[EBP+C]
00554796  |.  8B0D A8CE6800 MOV ECX,DWORD PTR DS:[68CEA8]            ;  cna32.0068CDA8
0055479C  |.  66:8941 1C    MOV WORD PTR DS:[ECX+1C],AX
005547A0  |.  66:8B45 08    MOV AX,WORD PTR SS:[EBP+8]
005547A4  |.  8B0D A8CE6800 MOV ECX,DWORD PTR DS:[68CEA8]            ;  cna32.0068CDA8
005547AA  |.  66:8941 08    MOV WORD PTR DS:[ECX+8],AX
005547AE  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
005547B3  |.  8378 34 00    CMP DWORD PTR DS:[EAX+34],0
005547B7  |.  0F85 19000000 JNZ cna32.005547D6                                                                                                      有狗和有狗都不跳,继续
005547BD  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
005547C2  |.  66:C740 18 20>MOV WORD PTR DS:[EAX+18],20
005547C8  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
005547CD  |.  50            PUSH EAX
005547CE  |.  E8 8DFAFFFF   CALL cna32.00554260
005547D3  |.  83C4 04       ADD ESP,4
005547D6  |>  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
005547DB  |.  66:C740 42 00>MOV WORD PTR DS:[EAX+42],0
005547E1  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
005547E6  |.  66:C740 1E 00>MOV WORD PTR DS:[EAX+1E],0
005547EC  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
005547F1  |.  C740 3A 00000>MOV DWORD PTR DS:[EAX+3A],0
005547F8  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
005547FD  |.  66:C740 44 00>MOV WORD PTR DS:[EAX+44],0
00554803  |.  66:C745 F0 00>MOV WORD PTR SS:[EBP-10],0
00554809  |.  E9 04000000   JMP cna32.00554812
0055480E  |>  66:FF45 F0    /INC WORD PTR SS:[EBP-10]
00554812  |>  0FBF45 F0      MOVSX EAX,WORD PTR SS:[EBP-10]
00554816  |.  83F8 08       |CMP EAX,8
00554819  |.  0F8D 35000000 |JGE cna32.00554854
0055481F  |.  0FBF45 F0     |MOVSX EAX,WORD PTR SS:[EBP-10]
00554823  |.  8B4D 10       |MOV ECX,DWORD PTR SS:[EBP+10]
00554826  |.  8A0408        |MOV AL,BYTE PTR DS:[EAX+ECX]
00554829  |.  0FBF4D F0     |MOVSX ECX,WORD PTR SS:[EBP-10]
0055482D  |.  8B15 A8CE6800 |MOV EDX,DWORD PTR DS:[68CEA8]           ;  cna32.0068CDA8
00554833  |.  884411 24     |MOV BYTE PTR DS:[ECX+EDX+24],AL
00554837  |.  0FBF45 F0     |MOVSX EAX,WORD PTR SS:[EBP-10]
0055483B  |.  8B4D 14       |MOV ECX,DWORD PTR SS:[EBP+14]
0055483E  |.  8A0408        |MOV AL,BYTE PTR DS:[EAX+ECX]
00554841  |.  0FBF4D F0     |MOVSX ECX,WORD PTR SS:[EBP-10]
00554845  |.  8B15 A8CE6800 |MOV EDX,DWORD PTR DS:[68CEA8]           ;  cna32.0068CDA8
0055484B  |.  884411 2C     |MOV BYTE PTR DS:[ECX+EDX+2C],AL
0055484F  |.^ E9 BAFFFFFF   \JMP cna32.0055480E
00554854  |>  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
00554859  |.  66:C740 18 00>MOV WORD PTR DS:[EAX+18],0
0055485F  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
00554864  |.  50            PUSH EAX
00554865  |.  E8 F6F9FFFF   CALL cna32.00554260
0055486A  |.  83C4 04       ADD ESP,4
0055486D  |.  66:8945 F4    MOV WORD PTR SS:[EBP-C],AX
00554871  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
00554874  |.  25 FFFF0000   AND EAX,0FFFF
00554879  |.  83F8 02       CMP EAX,2
0055487C  |.  0F85 31000000 JNZ cna32.005548B3                                    这个很关键,因为在这个跳转之前都是顺序执行的,但是有狗的话就跳了。所以必须跳。
00554882  |.  66:8B45 FC    MOV AX,WORD PTR SS:[EBP-4]
00554886  |.  8B0D A8CE6800 MOV ECX,DWORD PTR DS:[68CEA8]            ;  cna32.0068CDA8
0055488C  |.  66:8941 1C    MOV WORD PTR DS:[ECX+1C],AX
00554890  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
00554893  |.  8B0D A8CE6800 MOV ECX,DWORD PTR DS:[68CEA8]            ;  cna32.0068CDA8
00554899  |.  8941 34       MOV DWORD PTR DS:[ECX+34],EAX
0055489C  |.  66:8B45 F8    MOV AX,WORD PTR SS:[EBP-8]
005548A0  |.  8B0D A8CE6800 MOV ECX,DWORD PTR DS:[68CEA8]            ;  cna32.0068CDA8
005548A6  |.  66:8941 1E    MOV WORD PTR DS:[ECX+1E],AX
005548AA  |.  66:8B45 F4    MOV AX,WORD PTR SS:[EBP-C]
005548AE  |.  E9 D6000000   JMP cna32.00554989
005548B3  |>  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]                            跳到这里。
005548B6  |.  25 FFFF0000   AND EAX,0FFFF
005548BB  |.  83F8 0F       CMP EAX,0F
005548BE  |.  0F84 11000000 JE cna32.005548D5                                             不能跳!继续执行
005548C4  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
005548C7  |.  25 FFFF0000   AND EAX,0FFFF
005548CC  |.  83F8 0E       CMP EAX,0E
005548CF  |.  0F85 09000000 JNZ cna32.005548DE                                            这里必须跳。貌似判断EBP-C里放的东西。我还没搞清楚这个数值干嘛的。
005548D5  |>  66:8B45 F4    MOV AX,WORD PTR SS:[EBP-C]
005548D9  |.  E9 AB000000   JMP cna32.00554989
005548DE  |>  F745 F4 FFFF0>TEST DWORD PTR SS:[EBP-C],0FFFF
005548E5  |.  0F84 3E000000 JE cna32.00554929                                                必须跳
005548EB  |.  F645 0C 02    TEST BYTE PTR SS:[EBP+C],2
005548EF  |.  0F84 2B000000 JE cna32.00554920
005548F5  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
005548FA  |.  66:C740 18 22>MOV WORD PTR DS:[EAX+18],22
00554900  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
00554905  |.  50            PUSH EAX
00554906  |.  E8 55F9FFFF   CALL cna32.00554260
0055490B  |.  83C4 04       ADD ESP,4
0055490E  |.  0FB7C0        MOVZX EAX,AX
00554911  |.  83F8 06       CMP EAX,6
00554914  |.  0F85 06000000 JNZ cna32.00554920
0055491A  |.  66:C745 F4 00>MOV WORD PTR SS:[EBP-C],100
00554920  |>  66:8B45 F4    MOV AX,WORD PTR SS:[EBP-C]
00554924  |.  E9 60000000   JMP cna32.00554989
00554929  |>  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]                                          
0055492E  |.  33C9          XOR ECX,ECX
00554930  |.  66:8B48 1C    MOV CX,WORD PTR DS:[EAX+1C]
00554934  |.  83F9 02       CMP ECX,2
00554937  |.  0F85 43000000 JNZ cna32.00554980                                                                必须跳。
0055493D  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
00554942  |.  66:C740 18 07>MOV WORD PTR DS:[EAX+18],7
00554948  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
0055494D  |.  50            PUSH EAX
0055494E  |.  E8 0DF9FFFF   CALL cna32.00554260
00554953  |.  83C4 04       ADD ESP,4
00554956  |.  66:8945 F4    MOV WORD PTR SS:[EBP-C],AX
0055495A  |.  F745 F4 FFFF0>TEST DWORD PTR SS:[EBP-C],0FFFF
00554961  |.  0F84 19000000 JE cna32.00554980
00554967  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
0055496C  |.  66:C740 18 01>MOV WORD PTR DS:[EAX+18],1
00554972  |.  A1 A8CE6800   MOV EAX,DWORD PTR DS:[68CEA8]
00554977  |.  50            PUSH EAX
00554978  |.  E8 E3F8FFFF   CALL cna32.00554260
0055497D  |.  83C4 04       ADD ESP,4
00554980  |>  66:8B45 F4    MOV AX,WORD PTR SS:[EBP-C]                       
00554984  |.  E9 00000000   JMP cna32.00554989
00554989  |>  5F            POP EDI
0055498A  |.  5E            POP ESI
0055498B  |.  5B            POP EBX
0055498C  |.  C9            LEAVE
0055498D  \.  C3            RETN

改完后,运行后 还出来“hardlock狗,,请插入 ....”。还是进不了程序。
这个和模拟狗的情况一样,启动的监测狗程序应该废了,但是程序运行会自己监测狗。
因为找不到这个字符串。有也是在user32.dll空间里去了,一时间难住了。我在这个地方停了至少3-4天。菜啊。没办法。

后来换成了C32ASM这个工具找字符串,它查找的结果非常的明朗,简洁。开始都是什么OTPY_  、IDS_、IDM_、IDD_。学过VC的应该很清楚这些是什么。
继续找啊找。
眼前一亮,居然发现IDE_HARDLOCK_STATUS,大喜。不过通过别的(reshacker等汉化)工具我还能找到IDE_HARDLOCK。不知道C32ASM和OLLYDBG等为什么都找不到。疑惑。
00403290->PUSH      27C
00427D5D->PUSH      27C.


于是找到这段代码。
0040321D  |> /8B47 02       |/MOV EAX,DWORD PTR DS:[EDI+2]
00403220  |. |85C0          ||TEST EAX,EAX
00403222  |. |74 09         ||JE SHORT cna32.0040322D
00403224  |. |A1 400E6C00   ||MOV EAX,DWORD PTR DS:[6C0E40]
00403229  |. |85C0          ||TEST EAX,EAX
0040322B  |. |74 27         ||JE SHORT cna32.00403254
0040322D  |> |66:8B07       ||MOV AX,WORD PTR DS:[EDI]
00403230  |. |66:8B4F FE    ||MOV CX,WORD PTR DS:[EDI-2]
00403234  |. |68 7CC46000   ||PUSH cna32.0060C47C
00403239  |. |68 70C46000   ||PUSH cna32.0060C470                    ;  datakustik
0040323E  |. |50            ||PUSH EAX
0040323F  |. |51            ||PUSH ECX
00403240  |. |E8 FD141500   ||CALL cna32.00554742
00403245  |. |8BF0          ||MOV ESI,EAX
00403247  |. |83C4 10       ||ADD ESP,10
0040324A  |. |66:85F6       ||TEST SI,SI
0040324D     |74 10         JE SHORT cna32.0040325F
0040324F  |. |E8 67101500   ||CALL cna32.005542BB
00403254  |> |45            ||INC EBP
00403255  |. |83C7 08       ||ADD EDI,8
00403258  |. |83FD 04       ||CMP EBP,4
0040325B  |.^\72 C0         |\JB SHORT cna32.0040321D
0040325D  |.  EB 18         |JMP SHORT cna32.00403277
0040325F  |>  8B44EC 40     |MOV EAX,DWORD PTR SS:[ESP+EBP*8+40]
00403263  |.  85C0          |TEST EAX,EAX
00403265  |.  74 10         |JE SHORT cna32.00403277
00403267  |.  6A 00         |PUSH 0
00403269  |.  891D 400E6C00 |MOV DWORD PTR DS:[6C0E40],EBX
0040326F  |.  E8 5CDEFFFF   |CALL cna32.004010D0
00403274  |.  83C4 04       |ADD ESP,4
00403277  |>  33D2          |XOR EDX,EDX
00403279  |.  66:85F6       |TEST SI,SI
0040327C  |.  0F94C2        |SETE DL
0040327F  |.  8BFA          |MOV EDI,EDX
00403281  |.  85FF          |TEST EDI,EDI
00403283  |.  897C24 1C     |MOV DWORD PTR SS:[ESP+1C],EDI
00403287      75 22         JNZ SHORT cna32.004032AB
00403289  |.  81E6 FFFF0000 |AND ESI,0FFFF
0040328F  |.  56            |PUSH ESI
00403290  |.  68 7C020000   |PUSH 27C                                 就是这里。看看看前面的代码。不正式开始读狗的代码吗?F8运行
00403295  |.  6A 15         |PUSH 15
00403297  |.  E8 544D0200   |CALL cna32.00427FF0              到这句,就报错了。哈哈,大喜,是不是只要跳过这句就可以了呢。那么在00403287处必须跳转。
0040329C  |.  0FBFC0        |MOVSX EAX,AX
0040329F  |.  83C4 0C       |ADD ESP,0C
004032A2  |.  83F8 04       |CMP EAX,4
004032A5  |.^ 0F84 67FFFFFF \JE cna32.00403212
004032AB  |>  6A 01         PUSH 1
004032AD  |.  E8 FE0B1200   CALL cna32.00523EB0
004032B2  |.  83C4 04       ADD ESP,4
004032B5  |.  85FF          TEST EDI,EDI
004032B7  |.  0F84 98020000 JE cna32.00403555
004032BD  |.  68 60976F00   PUSH cna32.006F9760
004032C2  |.  E8 C94A0200   CALL cna32.00427D90
004032C7  |.  B9 20000000   MOV ECX,20
004032CC  |.  BE 60976F00   MOV ESI,cna32.006F9760
004032D1  |.  8D7C24 60     LEA EDI,DWORD PTR SS:[ESP+60]
004032D5  |.  8D4424 60     LEA EAX,DWORD PTR SS:[ESP+60]
004032D9  |.  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
004032DB  |.  50            PUSH EAX
004032DC  |.  E8 CF4A0200   CALL cna32.00427DB0
004032E1  |.  83C4 08       ADD ESP,8
004032E4  |.  33ED          XOR EBP,EBP
004032E6  |.  8D4424 5C     LEA EAX,DWORD PTR SS:[ESP+5C]

什么都不说了。00403287      75 22         JNZ SHORT cna32.004032AB                                       JNZ直接改成JMP。
再次运行,还是提示没有狗。OK。选第二个地方。00427D5D->PUSH      27C.先看红色那句。

00427CA0  /$  83EC 20       SUB ESP,20
00427CA3  |.  8D4424 00     LEA EAX,DWORD PTR SS:[ESP]
00427CA7  |.  53            PUSH EBX
00427CA8  |.  56            PUSH ESI
00427CA9  |.  57            PUSH EDI
00427CAA  |.  68 E0A06300   PUSH cna32.0063A0E0                      ; /mmhhduschaugstabaguadausheidha
00427CAF  |.  50            PUSH EAX                                 ; |String1
00427CB0  |.  33DB          XOR EBX,EBX                              ; |
00427CB2  |.  33FF          XOR EDI,EDI                              ; |
00427CB4  |.  FF15 10E35D00 CALL DWORD PTR DS:[<&KERNEL32.lstrcpyA>] ; \lstrcpyA
00427CBA  |.  A1 98D06000   MOV EAX,DWORD PTR DS:[60D098]
00427CBF  |.  83F8 03       CMP EAX,3                                ;  Switch (cases 0..3)
00427CC2  |.  77 23         JA SHORT cna32.00427CE7
00427CC4  |.  FF2485 787D42>JMP DWORD PTR DS:[EAX*4+427D78]
00427CCB  |>  A1 84A46F00   MOV EAX,DWORD PTR DS:[6FA484]            ;  Case 1 of switch 00427CBF
00427CD0  |.  EB 29         JMP SHORT cna32.00427CFB
00427CD2  |>  A1 90A46F00   MOV EAX,DWORD PTR DS:[6FA490]            ;  Case 0 of switch 00427CBF
00427CD7  |.  EB 22         JMP SHORT cna32.00427CFB
00427CD9  |>  A1 88A46F00   MOV EAX,DWORD PTR DS:[6FA488]            ;  Case 2 of switch 00427CBF
00427CDE  |.  EB 1B         JMP SHORT cna32.00427CFB
00427CE0  |>  A1 8CA46F00   MOV EAX,DWORD PTR DS:[6FA48C]            ;  Case 3 of switch 00427CBF
00427CE5  |.  EB 14         JMP SHORT cna32.00427CFB
00427CE7  |>  A1 84A46F00   MOV EAX,DWORD PTR DS:[6FA484]            ;  Default case of switch 00427CBF
00427CEC  |.  8B0D 90A46F00 MOV ECX,DWORD PTR DS:[6FA490]
00427CF2  |.  F7D0          NOT EAX
00427CF4  |.  0BC1          OR EAX,ECX
00427CF6  |.  A3 8CA46F00   MOV DWORD PTR DS:[6FA48C],EAX
00427CFB  |>  A9 00000010   TEST EAX,10000000
00427D00      74 45         JE SHORT cna32.00427D47                                不能跳。要往下执行才行。
00427D02  |.  8D4C24 15     LEA ECX,DWORD PTR SS:[ESP+15]
00427D06  |.  6A 01         PUSH 1
00427D08  |.  51            PUSH ECX
00427D09  |.  E8 C6C91200   CALL cna32.005546D4
00427D0E  |.  66:8BD8       MOV BX,AX
00427D11  |.  83C4 08       ADD ESP,8
00427D14  |.  81E3 FFFF0000 AND EBX,0FFFF
00427D1A      75 2B         JNZ SHORT cna32.00427D47                                 不能跳,要往下执行才行
00427D1C  |.  B9 08000000   MOV ECX,8
00427D21  |.  BF 8CD06000   MOV EDI,cna32.0060D08C
00427D26  |.  8D7424 15     LEA ESI,DWORD PTR SS:[ESP+15]
00427D2A  |.  33C0          XOR EAX,EAX
00427D2C  |.  F3:A6         REPE CMPS BYTE PTR ES:[EDI],BYTE PTR DS:>
00427D2E  |.  74 05         JE SHORT cna32.00427D35
00427D30  |.  1BC0          SBB EAX,EAX
00427D32  |.  83D8 FF       SBB EAX,-1
00427D35  |>  8BF8          MOV EDI,EAX
00427D37  |.  85FF          TEST EDI,EDI
00427D39      75 0C         JNZ SHORT cna32.00427D47                                   不能跳,要往下执行才行
00427D3B  |.  5F            POP EDI
00427D3C  |.  5E            POP ESI
00427D3D  |.  B8 01000000   MOV EAX,1
00427D42  |.  5B            POP EBX
00427D43  |.  83C4 20       ADD ESP,20
00427D46  |.  C3            RETN
00427D47  |>  33F6          XOR ESI,ESI                                                                   在上面的语句中有很多都往这里跳。如果跳的绝对完蛋了。所以不能往这里跳。看下面分析。
00427D49  |.  33C0          XOR EAX,EAX
00427D4B  |.  85FF          TEST EDI,EDI
00427D4D  |.  0F95C0        SETNE AL
00427D50  |.  8D0480        LEA EAX,DWORD PTR DS:[EAX+EAX*4]
00427D53  |.  8D0480        LEA EAX,DWORD PTR DS:[EAX+EAX*4]
00427D56  |.  8D1480        LEA EDX,DWORD PTR DS:[EAX+EAX*4]
00427D59  |.  8D04D3        LEA EAX,DWORD PTR DS:[EBX+EDX*8]
00427D5C  |.  50            PUSH EAX
00427D5D  |.  68 7C020000   PUSH 27C                                                 在这里呢。根据上一句的经验,没有狗的话,执行到这里绝对要报错
00427D62  |.  6A 10         PUSH 10
00427D64  |.  E8 87020000   CALL cna32.00427FF0                                果然,运行提示报错。而且是关键是这里报错代码是0.正是碰到那句。看来这里不能让它执行。往上找跳转。
00427D69  |.  83C4 0C       ADD ESP,0C
00427D6C  |.  8BC6          MOV EAX,ESI
00427D6E  |.  5F            POP EDI
00427D6F  |.  5E            POP ESI
00427D70  |.  5B            POP EBX
00427D71  |.  83C4 20       ADD ESP,20
00427D74  \.  C3            RETN

好了。把上面几句改成顺序执行就Ok了。仔细看代码,发现有三个地方调用了00427CA0,可以认定这段就是在软件运行时候监测狗的代码。拔狗就出错。

修改好,保存,运行----------------------------------------------------------------------------OK
软件顺利打开。运行的时候也没有“找不到狗的提示”了。

打开,保存。编辑、输出、输入。参数设置,都没问题。只不过唯一遗憾的是无法计算。也只能算完成了90%吧。
现在还菜到家,以后我再慢慢找怎么这个原因。如果有高手愿意带带我的话,PM我吧。我单位还有几个sentinl狗的软件..........以后再搞它了。

谢谢。以上是我学习2个礼拜破解的收获。欢迎大家拍砖,交流。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没有能力手脱狗! 只有支持了

但是有其方法  把你的hl-dump的数据发给我  我帮你看看  

如果你愿意 呵呵!
2008-7-25 08:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有联系方式不?
给个!
2008-7-25 12:14
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
4
读狗的地方? 还早
这只是 Login 而己
2008-7-25 12:48
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
      alphasxb@126.com
2008-7-25 12:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
http://rapidshare.de/files/40087560/0773.DAT.html

http://rapidshare.de/files/40087566/0773.REG.html
2008-7-27 20:49
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
已经搞定    如何给你测试啊?
2008-7-28 12:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我的邮件katerren@gmail.com。

最好请告诉我如何用!
2008-7-28 21:10
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
     已经发送了  你测试下
2008-7-30 12:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
好型出错的提示不一样了。
我发邮件给你了。
2008-7-30 12:16
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
     做过很多个了  应该可以

   你的这个我也测过的
   
   如果实在不行     软件发我  帮你调试下
2008-7-31 13:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
OK了。自己爆破的!

跟踪CALL,不断拔狗插狗判断!前前后后花了我2个礼拜。方法比较愚蠢!呵呵!
2008-7-31 22:17
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
       把过程写出来  发到这里   和其他人一同分享下

    一定可以加为精华!   谢谢!
2008-8-1 08:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
牛X!太牛X了!
2008-8-1 09:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
最后一贴,就可以上传附件了
2008-8-1 09:27
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
强,期待楼主贴出爆破全过程。
2008-8-1 17:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
补充完毕!o(∩_∩)o...
2008-8-3 10:35
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
强人啊!!
2008-8-3 11:09
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
Have do you doing to run this??? I have this software. I can´t cracking this.

greetengs!!!
2008-11-22 06:57
0
雪    币: 439
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
这样暴破的结果会引起很多无法预测的错误,或是无法正确计算等...

建议你下载HARDLOCK的监控软件,看看返回值是什么,调用了什么功能,然后下载SDK,根据监控工具的数据,再从软件里下手打补丁,  如果找不到软件里关键地方,可以SIG方式查找

另外,模拟是最完美的了..
2008-11-22 16:24
0
雪    币: 427
活跃值: (65)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
21
如果只是检测狗的话还行,但狗一般和程序有数据交流,这样爆掉令人担忧。。。
2008-11-22 17:04
0
游客
登录 | 注册 方可回帖
返回
//