首页
社区
课程
招聘
[旧帖] [讨论]求解:一个KEY FILE 保护软件的破解思路 0.00雪花
发表于: 2009-2-7 15:40 7143

[旧帖] [讨论]求解:一个KEY FILE 保护软件的破解思路 0.00雪花

2009-2-7 15:40
7143
软件性质: **软件.通过KEY FILE文件保护自己,并存多重效验.

软件下载地址:  http://s9456.ys168.com/

下面是我的思路.但是没有成功爆破!请高手知道..

去壳:

PEiD 查壳 => PECompact 2.x -> Jeremy Collake

用 ESP定律去壳:

载入 OD ssQss.exe

下断 hw 0012FFC0

F9 ->

00685CB3    00B8 53680055   ADD BYTE PTR DS:[EAX+55006853],BH
00685CB9    8BEC            MOV EBP,ESP
00685CBB    83C4 F0         ADD ESP,-10                              ; 我认为这是 OEP
00685CBE    B8 E0536800     MOV EAX,ssQss.006853E0
00685CC3    E8 1017D8FF     CALL ssQss.004073D8


dump 为ssss.exe后 用 ImportREC 修复;当中有两个指针错误,全部改为 GetProcAddress,修复为ssss_.exe

去自效验(软件启动时对自身的效验,其他的我还没有解决.):

然后OD 加载ssss_.exe

下载断 bp CreateFileA 到

0012FD40   0040A4FB  /CALL 到 CreateFileA 来自 ssss_.0040A4F6
0012FD44   00FF3A9C  |FileName = "C:\Downloads\ssQss7.0\ssss_.exe"
0012FD48   80000000  |Access = GENERIC_READ
0012FD4C   00000003  |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
0012FD50   00000000  |pSecurity = NULL
0012FD54   00000003  |Mode = OPEN_EXISTING
0012FD58   00000080  |Attributes = NORMAL
0012FD5C   00000000  \hTemplateFile = NULL


再下断 bp SetFilePointer 到

0012FD70   0040A5AB  /CALL 到 SetFilePointer 来自 ssss_.0040A5A6
0012FD74   00000080  |hFile = 00000080 (window)
0012FD78   00000000  |OffsetLo = 0
0012FD7C   0012FD90  |pOffsetHi = 0012FD90
0012FD80   00000000  \Origin = FILE_BEGIN


返回领空。。。。

一直回到 效验比较文件的地方

00653F93   .  3B02          CMP EAX,DWORD PTR DS:[EDX]
00653F95   .  0F94C0        SETE AL
00653F98   .  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
00653F9B   .  8882 8C290000 MOV BYTE PTR DS:[EDX+298C],AL
00653FA1   .  A1 841D6900   MOV EAX,DWORD PTR DS:[691D84]
00653FA6   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
00653FA8   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
00653FAA   .  8B15 18236900 MOV EDX,DWORD PTR DS:[692318]            ;  ssss_.00694560
00653FB0   .  8B12          MOV EDX,DWORD PTR DS:[EDX]
00653FB2   .  3B02          CMP EAX,DWORD PTR DS:[EDX]
00653FB4   .  74 0C         JE SHORT ssss_.00653FC2
00653FB6   .  A1 84226900   MOV EAX,DWORD PTR DS:[692284]



  00653F95   .  0F94C0        SETE AL                              =》SETNE AL
   00653FB4   .  74 0C         JE SHORT ssss_.00653FC2  =》JMP SHORT ssss_.00653FC2

   
去关闭时弹出网页:

查找 .cn 字串。到http://www.***w.cn

0067CABD   . /75 1D         JNZ SHORT ssss_.0067CADC
0067CABF   . |6A 01         PUSH 1                                   ; /IsShown = 1
0067CAC1   . |6A 00         PUSH 0                                   ; |DefDir = NULL
0067CAC3   . |6A 00         PUSH 0                                   ; |Parameters = NULL
0067CAC5   . |68 48CB6700   PUSH ssss_.0067CB48                      ; |http://www.***w.cn
0067CACA   . |6A 00         PUSH 0                                   ; |Operation = NULL
0067CACC   . |A1 84226900   MOV EAX,DWORD PTR DS:[692284]            ; |


0067CABD   . /75 1D        => JMP SHORT ssss_.0067CADC


保存文件。。。完成脱壳。

关于破解:

下断:bp CreateFileA 但是没有找到 效验 sRegFile.Dat 文件的地方

查找 sRegFile.Dat 字串也没有找到

查找 注册给 字串:

0061A6C2  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
0061A6C5  |.  BA 84A76100   MOV EDX,ssss_.0061A784                   ;  **
0061A6CA  |.  E8 89A6DEFF   CALL ssss_.00404D58
0061A6CF  |.  68 94A76100   PUSH ssss_.0061A794                      ;  版权归  ****工作室(
0061A6D4  |.  FF75 FC       PUSH DWORD PTR SS:[EBP-4]
0061A6D7  |.  68 B8A76100   PUSH ssss_.0061A7B8                      ;  )  所有!
0061A6DC  |.  68 CCA76100   PUSH ssss_.0061A7CC                      ;  \n\n
0061A6E1  |.  68 D8A76100   PUSH ssss_.0061A7D8                      ;  copyright ssstudio 2006.5 - 2009.1
0061A6E6  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
0061A6E9  |.  BA 05000000   MOV EDX,5
0061A6EE  |.  E8 5DA9DEFF   CALL ssss_.00405050
0061A6F3  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
0061A6F6  |.  8B83 08030000 MOV EAX,DWORD PTR DS:[EBX+308]
0061A6FC  |.  E8 53B4E4FF   CALL ssss_.00465B54
0061A701  |.  A1 60266900   MOV EAX,DWORD PTR DS:[692660]
0061A706  |.  8338 00       CMP DWORD PTR DS:[EAX],0
0061A709  |.  74 36         JE SHORT ssss_.0061A741
0061A70B  |.  A1 60266900   MOV EAX,DWORD PTR DS:[692660]
0061A710  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
0061A712  |.  BA 04A86100   MOV EDX,ssss_.0061A804                   ;  *@!#+%$^
0061A717  |.  E8 C0A9DEFF   CALL ssss_.004050DC
0061A71C  |.  74 23         JE SHORT ssss_.0061A741
0061A71E  |.  8B0D 60266900 MOV ECX,DWORD PTR DS:[692660]            ;  ssss_.0069453C
0061A724  |.  8B09          MOV ECX,DWORD PTR DS:[ECX]
0061A726  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
0061A729  |.  BA 18A86100   MOV EDX,ssss_.0061A818                   ;  注册给:


...........

期待高人讲解....

=================================================

下面是我自己随便跟的,没有什么不知道是不走错了.没有什么解释.因为是随便走的...

下断 bp CreateFileA 跟到:

0012ED0C 0056F274 /CALL 到 CreateFileA 来自 ssss.0056F26F
0012ED10 0056F394 |FileName = "\\.\PhysicalDrive0"
0012ED14 C0000000 |Access = GENERIC_READ|GENERIC_WRITE
0012ED18 00000003 |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
0012ED1C 00000000 |pSecurity = NULL
0012ED20 00000003 |Mode = OPEN_EXISTING
0012ED24 00000000 |Attributes = 0
0012ED28 00000000 \hTemplateFile = NULL


下断 bp ReadFile 跟到:

0012EDF8 0040A4FB /CALL 到 CreateFileA 来自 ssss.0040A4F6
0012EDFC 010161E8 |FileName = "C:\Downloads\ss\ssQss7.0\sRegFile.Dat"
0012EE00 C0000000 |Access = GENERIC_READ|GENERIC_WRITE
0012EE04 00000000 |ShareMode = 0
0012EE08 00000000 |pSecurity = NULL
0012EE0C 00000003 |Mode = OPEN_EXISTING
0012EE10 00000080 |Attributes = NORMAL
0012EE14 00000000 \hTemplateFile = NULL


返回:

0040A4EE |. 8BC7 MOV EAX,EDI
0040A4F0 |. E8 9BACFFFF CALL ssss.00405190
0040A4F5 |. 50 PUSH EAX ; |FileName
0040A4F6 |. E8 4DD1FFFF CALL <JMP.&kernel32.CreateFileA> ; \CreateFileA
0040A4FB |> 5F POP EDI ; 01010002
0040A4FC |. 5E POP ESI


跟到下面:

004224EC |. 56 PUSH ESI
004224ED |. 84D2 TEST DL,DL
004224EF |. 74 08 JE SHORT ssss.004224F9
004224F1 |. 83C4 F0 ADD ESP,-10
004224F4 |. E8 371DFEFF CALL ssss.00404230
004224F9 |> 8BDA MOV EBX,EDX
004224FB |. 8BF0 MOV ESI,EAX
004224FD |. 66:8B45 08 MOV AX,WORD PTR SS:[EBP+8]
00422501 |. 50 PUSH EAX
00422502 |. 6A 00 PUSH 0
00422504 |. 33D2 XOR EDX,EDX
00422506 |. 8BC6 MOV EAX,ESI
00422508 |. E8 1F000000 CALL ssss.0042252C
0042250D |. 8BC6 MOV EAX,ESI
0042250F |. 84DB TEST BL,BL
00422511 |. 74 0F JE SHORT ssss.00422522
00422513 |. E8 701DFEFF CALL ssss.00404288
00422518 |. 64:8F05 00000>POP DWORD PTR FS:[0]


之后就没有了头绪....

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
需要热心观众、、、、、、、、、、、、
2009-2-8 13:24
0
雪    币: 6604
活跃值: (2939)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
估计不是一个正式版!
2009-2-9 12:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这是个正式版的软件来的,只不过有两种注册方式
2009-2-9 15:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个版本只有一个注册方式.就是key file 文件的验证.有提示注册的框.但是不能输入注册信息,正因为这样.我还没有找到关键点
2009-2-9 17:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个版本只有一个注册方式.就是key file 文件的验证.有提示注册的框.但是不能输入注册信息,正因为这样.我还没有找到关键点
2009-2-9 17:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我明白了,你的是7.0以上版本,我以为是6.20
2009-2-10 15:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
是的。所以麻烦了点
2009-2-10 18:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
还不知破这个的关键是什么
2009-2-10 21:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
有人提示:

在目录下新建sRegFile.Dat就可以断下了
没有这个文件的话 0056F996处的跳转就会跳过 对注册文件的操作就在这里

0056F98F   .  E8 E8ACE9FF   call b.0040A67C
0056F994   .  84C0          test al,al
0056F996   .  0F84 4A030000 je b.0056FCE6
0056F99C   .  6A 02         push 2                                   ; /Arg1 = 00000002
0056F99E   .  8B4D FC       mov ecx,dword ptr ss:[ebp-4]             ; |
0056F9A1   .  B2 01         mov dl,1                                 ; |
0056F9A3   .  A1 08CD4100   mov eax,dword ptr ds:[41CD08]            ; |
0056F9A8   .  E8 8B2BEBFF   call b.00422538                          ; \b.00422538
0056F9AD   .  8945 F8       mov dword ptr ss:[ebp-8],eax
0056F9B0   .  33C9          xor ecx,ecx
0056F9B2   .  55            push ebp
0056F9B3   .  68 DFFC5600   push b.0056FCDF
0056F9B8   .  64:FF31       push dword ptr fs:[ecx]
0056F9BB   .  64:8921       mov dword ptr fs:[ecx],esp
0056F9BE   .  8B45 F8       mov eax,dword ptr ss:[ebp-8]
0056F9C1   .  8B10          mov edx,dword ptr ds:[eax]
0056F9C3   .  FF12          call dword ptr ds:[edx]
0056F9C5   .  52            push edx
0056F9C6   .  50            push eax
0056F9C7   .  8B73 04       mov esi,dword ptr ds:[ebx+4]
0056F9CA   .  8BC6          mov eax,esi
0056F9CC   .  99            cdq
0056F9CD   .  3B5424 04     cmp edx,dword ptr ss:[esp+4]
0056F9D1   .  75 0D         jnz short b.0056F9E0
0056F9D3   .  3B0424        cmp eax,dword ptr ss:[esp]
0056F9D6   .  5A            pop edx
0056F9D7   .  58            pop eax
0056F9D8   .  0F87 EB020000 ja b.0056FCC9
0056F9DE   .  EB 08         jmp short b.0056F9E8


下面这个过程是验证是否注册通过从而判断是否出现提示注册窗口

0061E878    55              push ebp
0061E879    8BEC            mov ebp,esp
0061E87B    33C9            xor ecx,ecx
0061E87D    51              push ecx
0061E87E    51              push ecx
0061E87F    51              push ecx
0061E880    51              push ecx
0061E881    51              push ecx
0061E882    51              push ecx
0061E883    51              push ecx
0061E884    53              push ebx
0061E885    8BD8            mov ebx,eax
0061E887    33C0            xor eax,eax
0061E889    55              push ebp
0061E88A    68 55EA6100     push b.0061EA55
0061E88F    64:FF30         push dword ptr fs:[eax]
0061E892    64:8920         mov dword ptr fs:[eax],esp
0061E895    C645 FF 00      mov byte ptr ss:[ebp-1],0
0061E899    E8 52FEF5FF     call b.0057E6F0
0061E89E    E8 4501F6FF     call b.0057E9E8
0061E8A3    8D55 F0         lea edx,dword ptr ss:[ebp-10]
0061E8A6    B8 6CEA6100     mov eax,b.0061EA6C                       ; ASCII "DgfelMvSAuzNzvjZ"


其他的相信就不难跟了 以上对应的是7.10版

==============================

继续努力。刚学OD Crack....

哪位仁兄搞定注册。给指引一下。谢谢。。。
2009-2-12 21:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
等待不到结果.再过两天删帖..
2009-3-2 09:52
0
雪    币: 205
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
这个你没写完啊,接下来怎么跟啊,关键在哪?
2009-3-16 09:29
0
雪    币: 211
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
脱壳后要去除校验需要费一番心,提醒一下,可以在下面地方下断:
call    xxxxxx
test    al, al
je      short xxxxxx
push    0                             ; /ExitCode = 0
call    <jmp.&user32.PostQuitMessage> ; \PostQuitMessage
retn

软件对文件名、文件大小和CRC都有校验,文件大小和CRC存于TinyDB格式数据库,要找到此校验可以关注“SysOpt”这个字符
2009-6-11 13:04
0
游客
登录 | 注册 方可回帖
返回
//