前段时间破解了一个彩虹SuperPro USB的狗,把自己破解过程介绍给大家,
供参考。
前提条件是,本人已经有一个正版的加密狗。
1。使用读狗工具将狗中的数据读出来。记录下来
2。运行OllyDBG打开执行文件,插上狗,运行程序到检查完狗,马上暂停。
3。在内存中搜索读狗工具读出的数据。找到后,记住地址,并在此地址
设置内存写断点。
4。重新运行,插狗,得到读狗的代码:
读狗数然后写此内存单元的程序:
0040B293 |> BF 18000000 MOV EDI,18
0040B298 |. BE 0DFB4100 MOV ESI,gg.0041FB0D
0040B29D |> 8D4C24 16 /LEA ECX,DWORD PTR SS:[ESP+16]
0040B2A1 |. 55 |PUSH EBP
0040B2A2 |. 51 |PUSH ECX
0040B2A3 |. 57 |PUSH EDI
0040B2A4 |. E8 27110000 |CALL gg.0040C3D0
0040B2A9 |. 83C4 0C |ADD ESP,0C
0040B2AC |. 85C0 |TEST EAX,EAX
0040B2AE |.^74 D6 |JE SHORT gg.0040B286
0040B2B0 |. 66:8B4424 16 |MOV AX,WORD PTR SS:[ESP+16]
0040B2B5 |. 33D2 |XOR EDX,EDX
0040B2B7 |. 8AD4 |MOV DL,AH
0040B2B9 |. 8856 FF |MOV BYTE PTR DS:[ESI-1],DL
0040B2BC |. 8806 |MOV BYTE PTR DS:[ESI],AL
0040B2BE |. 83C6 02 |ADD ESI,2
0040B2C1 |. 47 |INC EDI
0040B2C2 |. 66:83FF 20 |CMP DI,20
0040B2C6 |.^72 D5 \JB SHORT gg.0040B29D
0040B2C8 |> 5F POP EDI
0040B2C9 |. 5E POP ESI
0040B2CA |. 5D POP EBP
0040B2CB |. B8 01000000 MOV EAX,1
0040B2D0 |. 5B POP EBX
0040B2D1 |. 81C4 0C080000 ADD ESP,80C
0040B2D7 \. C3 RETN
将此代码改为直接将狗的数据写如内存中:
0040B293 BE 0CFB4100 MOV ESI,gg.0041FB0C
0040B298 C706 D8004555 MOV DWORD PTR DS:[ESI],5894DFD8
0040B29E C746 04 440000>MOV DWORD PTR DS:[ESI+4],4467D89
0040B2A5 C746 04 000028>MOV DWORD PTR DS:[ESI+8],280000
0040B2AC C746 0C FF00FF>MOV DWORD PTR DS:[ESI+C],0FFFFF
0040B2B3 5F POP EDI ; gg.0042049C
0040B2B4 5E POP ESI
0040B2B5 5D POP EBP
0040B2B6 B8 01000000 MOV EAX,1
0040B2BB 5B POP EBX
0040B2BC 81C4 0C080000 ADD ESP,80C
0040B2C2 C3 RETN
5。下面就是查找检测是否插狗的代码,将代码改为狗被找到。
查看堆栈,找到调用了上面读狗的过程的代码,我破解的程序只需
将JNE该为JE后就能在没插狗的时候跳到读狗程序。
破戒完毕。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)