首页
社区
课程
招聘
[原创]一个超简单的KeyFile
发表于: 2006-8-20 12:01 5320

[原创]一个超简单的KeyFile

2006-8-20 12:01
5320

【文章标题】: 一个超简单的KeyFile
【文章作者】: rcracker
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  PEID侦测为ASPack 2.11,用esp定律脱壳。
  OD载入脱壳后的文件。下断点。
  00401098   > \6A 00         PUSH 0                                   ; /hTemplateFile = NULL
  0040109A   .  68 EF204000   PUSH 1.004020EF                          ; |Attributes = READONLY|HIDDEN|SYSTEM|ARCHIVE|NORMAL|402048
  0040109F   .  6A 03         PUSH 3                                   ; |Mode = OPEN_EXISTING
  004010A1   .  6A 00         PUSH 0                                   ; |pSecurity = NULL
  004010A3   .  6A 03         PUSH 3                                   ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
  004010A5   .  68 000000C0   PUSH C0000000                            ; |Access = GENERIC_READ|GENERIC_WRITE
  004010AA   .  68 E5204000   PUSH 1.004020E5                          ; |[BCG].key--------------------------------文件名.
  004010AF   .  E8 DE000000   CALL <JMP.&kernel32.CreateFileA>         ; \CreateFileA
  004010B4   .  A3 00204000   MOV DWORD PTR DS:[402000],EAX
  004010B9   .  833D 00204000>CMP DWORD PTR DS:[402000],-1             ;EAX返回-1表示文件不存在
  004010C0   .  0F84 92000000 JE 1.00401158                            ; 文件不存在,跳向失败
  004010C6   .  6A 00         PUSH 0                                   ; /pOverlapped = NULL
  004010C8   .  68 07214000   PUSH 1.00402107                          ; |pBytesRead = 1.00402107
  004010CD   .  6A 0A         PUSH 0A                                  ; |BytesToRead = A (10.)
  004010CF   .  68 F3204000   PUSH 1.004020F3                          ; |Buffer = 1.004020F3
  004010D4   .  FF35 00204000 PUSH DWORD PTR DS:[402000]               ; |hFile = NULL
  004010DA   .  E8 C5000000   CALL <JMP.&kernel32.ReadFile>            ; \ReadFile
  004010DF   .  85C0          TEST EAX,EAX
  004010E1   .  74 75         JE SHORT 1.00401158
  004010E3   .  6A 00         PUSH 0                                   ; /pOverlapped = NULL
  004010E5   .  68 07214000   PUSH 1.00402107                          ; |pBytesRead = 1.00402107
  004010EA   .  6A 0A         PUSH 0A                                  ; |BytesToRead = A (10.)
  004010EC   .  68 FD204000   PUSH 1.004020FD                          ; |Buffer = 1.004020FD
  004010F1   .  FF35 00204000 PUSH DWORD PTR DS:[402000]               ; |hFile = NULL
  004010F7   .  E8 A8000000   CALL <JMP.&kernel32.ReadFile>            ; \ReadFile
  004010FC   .  85C0          TEST EAX,EAX
  004010FE   .  74 58         JE SHORT 1.00401158
  00401100   .  FF35 00204000 PUSH DWORD PTR DS:[402000]               ; /hObject = NULL
  00401106   .  E8 93000000   CALL <JMP.&kernel32.CloseHandle>         ; \CloseHandle
  0040110B   .  33C0          XOR EAX,EAX
  0040110D   .  EB 04         JMP SHORT 1.00401113
  0040110F   .  C9            LEAVE
  00401110   .  C2 1000       RETN 10
  00401113   >  80B0 F3204000>XOR BYTE PTR DS:[EAX+4020F3],58          ;keyfile中的每个字节值分别与58相异或。
  0040111A   .  40            INC EAX
  0040111B   .  80B8 F3204000>CMP BYTE PTR DS:[EAX+4020F3],0           ;比较是否取完。
  00401122   .^ 75 EF         JNZ SHORT 1.00401113                     ;没有继续。
  00401124   .  68 F3204000   PUSH 1.004020F3                          ;这里相当于假码。
  下命令 dd 4020f3
  004020F3  49 7A 6B 1C 0D 3E 2F D0 C1 00 00 00 00 00 00 00  Izk.>/辛.......
  00402103  00 00 00 00 00 00 00 00 00 0E 00 00 00 90 00 00  ............?.
  00402113  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  
  00401129   .  68 FD204000   PUSH 1.004020FD                          ;这里相当于真码。
  下命令 dd 4020fd
  004020FD  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0E  ...............
  0040210D  00 00 00 90 00 00 00 00 00 00 00 00 00 00 00 00  ...?...........
  0040211D  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  
                        
  0040112E   .  E8 77000000   CALL <JMP.&kernel32.lstrcmp>             ; \lstrcmpA-----------关键比较.
  00401133   .  83F8 00       CMP EAX,0
  00401136   .  74 06         JE SHORT 1.0040113E                     
  00401138   .  EB 1E         JMP SHORT 1.00401158
  0040113A   .  C9            LEAVE
  0040113B   .  C2 1000       RETN 10
  0040113E   >  68 00100000   PUSH 1000                                ; /Style = MB_OK|MB_SYSTEMMODAL
  00401143   .  68 26204000   PUSH 1.00402026                          ; |officialcrackme
  00401148   .  68 BF204000   PUSH 1.004020BF                          ; |注册验证成功,恭喜您成功破解了这个程序
  0040114D   .  6A 00         PUSH 0                                   ; |hOwner = NULL
  0040114F   .  E8 5C000000   CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
  00401154   .  C9            LEAVE
  
  算法总结:
          keyfile文件名为[BCG].KEY,其中的每个字节的值与58异或的结果都应为0,即keyfile中所有字节的值都应为58.


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 338
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
又有key注册的学习资料了!
2006-8-20 13:11
0
雪    币: 461
活跃值: (93)
能力值: ( LV9,RANK:1170 )
在线值:
发帖
回帖
粉丝
3
支持楼主!
2006-8-20 13:40
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这里爆破也可以吧?
004010C0   .  0F84 92000000 JE 1.00401158
2006-8-20 18:23
0
雪    币: 218
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
请问楼主,这个crackme哪里下载啊?
2006-8-20 21:35
0
雪    币: 218
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
还有,这个加密算法怎么写?
2006-8-20 21:37
0
雪    币: 243
活跃值: (13)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
最初由 李东国 发布
这里爆破也可以吧?
004010C0 . 0F84 92000000 JE 1.00401158


把跳向00401158的跳转全部NOP掉
2006-8-21 08:18
0
游客
登录 | 注册 方可回帖
返回
//