首页
社区
课程
招聘
CrackMe 2005#1 by KuNgBiM追码
发表于: 2005-12-11 17:46 6042

CrackMe 2005#1 by KuNgBiM追码

2005-12-11 17:46
6042

http://bbs.pediy.com/showthread.php?s=&threadid=10144&highlight=KuNgBiM
不知道帖子就沉了。。。。
【破解作者】 听听雨吧/ListenToRain
【作者邮箱】 listentorain_cat4hlm[AT]126.com
【使用工具】 VbExplorer+WKTVBDE1.3
【破解平台】 Win9x/NT/2000/XP
【软件名称】 CrackMe 2005#1 by KuNgBiM
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】

1。作者提供了两个加壳的版本,我选了那个UPx加壳的部分(谁让咱是菜鸟呢)
2。脱壳之后,发现是Vb写的程序,SMartCheCk检测得知是Pcode,使用VBExplorer静态分析先!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
:00403B48  000D                            LargeBos                   ;IDE beginning of line with 0D byte codes
:00403B4A  6C70FF                          ILdRf                      ;Push DWORD [LOCAL_0090]//真码变形
:00403B4D  6C60FF                          ILdRf                      ;Push DWORD [LOCAL_00A0]//假码变形
:00403B50  FB30                            EqStr                      ;//比较上面的变形后的码
:00403B52  1C6D03                          BranchF                    ;If Pop=0 then ESI=00403BDD//爆破点
:00403B55  0033                            LargeBos                   ;IDE beginning of line with 33 byte codes
:00403B57  27B4FE                          LitVar                     ;PushVar LOCAL_014C
:00403B5A  27D4FE                          LitVar                     ;PushVar LOCAL_012C
******Possible String Ref To->":)"                              //这是注册成功提示。。
                               |
:00403B5D  3A08FF0700                      LitVarStr                  ;PushVarString ptr_00402D88
:00403B62  4EF8FE                          FStVarCopyObj              ;[LOCAL_0108]=vbaVarDup(Pop)
:00403B65  04F8FE                          FLdRfVar                   ;Push LOCAL_0108
:00403B68  F500000000                      LitI4                      ;Push 00000000
******Possible String Ref To->"Yeh~~!!You good kind!!"          //要是软件作者都这样想就好了。。。
                               |
:00403B6D  3A34FF0800                      LitVarStr                  ;PushVarString ptr_00402D54
:00403B72  4E24FF                          FStVarCopyObj              ;[LOCAL_00DC]=vbaVarDup(Pop)
:00403B75  0424FF                          FLdRfVar                   ;Push LOCAL_00DC
**********Reference To->msvbvm60.rtcMsgBox                        //显然只有成功能弹出窗口
                               |
:00403B78  0A09001400                      ImpAdCallFPR4              ;Call ptr_00401042; check stack 0014; Push EAX
:00403B7D  36080024FFF8FED4                FFreeVar                   ;Free 0008/2 variants
:00403B88  000F                            LargeBos                   ;IDE beginning of line with 0F byte codes
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
这段是成功代码。其实我们可以看到,其实作者在比较[LOCAL_0090]和[LOCAL_00A0]处的值,如果相等就跳向成功。
3。载入WKTVBDE,下地址断点00403B48,输入假消息:
Name:ListenToRain
Sn:787878787878787878787878
然后F5运行,点击Check,程序被断下,可见如下代码
00403B23: 00 LargeBos
00403B25: 28 LitVarI2 0h , 0
00403B2A: FC Lead1/FStVar
00403B2E: 00 LargeBos
00403B30: F4 LitI2_Byte: -> 1h 1
00403B32: 70 FStI2 0012F442
00403B35: 00 LargeBos
00403B37: 6B FLdI2
00403B3A: 44 CVarI2
00403B3D: 04 FLdRfVar 0012F444h
00403B40: BC DivVar
00403B44: 55 CI2Var
00403B45: 70 FStI2 0012F442
00403B48: 00 LargeBos
00403B4A: 6C ILdRf 0015D55Ch
00403B4D: 6C ILdRf 0015DB54h
00403B50: 30 EqStr
00403B52: 1C BranchF 00403BDD ?
00403B55: 00 LargeBos
Crtl+M打开内存编辑器,看0015D55C,发现“PMFlHe9N9iMe”字样
F8下去,再次发现0015DB54处,发现“67676767676767676767。。。”字样
值得注意的是:这里0015D55C和0015DB54不是固定的。
按照通常的思路,现在要去看看作者的加密算法了,可是不幸的是我是个菜鸟。。。+PCode新手
对于自己编写的Pcode都要琢磨半天,这么难的算法怎么看的懂啊。。。
不过幸好KuNgBiM比较照顾我们菜鸟,没用什么MD5,RSA之类的Bt算法,所用的变形算法原型是:
★★★★★★★★★★★★★★★★★★★★★★★★★★★

将注册码按位求asc(),然后:
for i to len(sn)
M(i)=Asc(注册码的每一位)+1
最后将∑M=M(1)+……+M(len(sn))连接在一起
★★★★★★★★★★★★★★★★★★★★★★★★★★★
“PMFlHe9N9iMe“就是此时的M,故对上面的算法逆向,有真正注册码
Sn=QNGmIf:O:jNf
4。总结:
Name:ListenToRain
Sn:QNGmIf:O:jNf
不过就算显示注册成功,标题栏的Ungistered仍然未除,难道是KuNgBiM的暗桩?
继续向下看
★★★★★★★★★★★★★★★★★★★★★★★★★★★
**********Reference To->msvbvm60.rtcMsgBox                        //显然只有成功能弹出窗口
                               |
:00403B78  0A09001400                      ImpAdCallFPR4              ;Call ptr_00401042; check stack 0014; Push EAX
:00403B7D  36080024FFF8FED4                FFreeVar                   ;Free 0008/2 variants
:00403B88  000F                            LargeBos                   ;IDE beginning of line with 0F byte codes
******Possible String Ref To->"CrackMe 2005 #1 by KuNgBiM (Registered)"//成功后窗体应该显示的字符串
                               |
:00403B8A  3A34FF0A00                      LitVarStr                  ;PushVarString ptr_00402D94
:00403B8F  25                              PopAdLdVar                 ;
:00403B90  04A4FE                          FLdRfVar                   ;Push LOCAL_015C
:00403B93  FF430B00                        VarLateMemSt               ;
:00403B97  0017                            LargeBos                   ;IDE beginning of line with 17 byte codes
******Possible String Ref To->"Registered"                      //成功后标签的字符串
                               |
:00403B99  1B0C00                          LitStr                     ;Push ptr_00402DF8
:00403B9C  21                              FLdPrThis                  ;[SR]=[stack2]
:00403B9D  0F0003                          VCallAd                    ;Return the control index 02
:00403BA0  1920FF                          FStAdFunc                  ;
:00403BA3  0820FF                          FLdPr                      ;[SR]=[LOCAL_00E0]
没有调用Form1.Caption的代码,应该不会是暗桩。。。
★★★★★★★★★★★★★★★★★★★★★★★★★★★
麻烦大哥们指点一下:
***********Reference To:[propget]TextBox.Text
                              |
:004038AB  0DA0000000                      VCallHresult               ;Call ptr_00402BD0// 获得文本框中的内容
:004038B0  6C1CFF                          ILdRf                      ;Push DWORD [LOCAL_00E4]
:004038B3  4A                              FnLenStr                   ;vbaLenBstr//测长度
:004038B4  F500000000                      LitI4                      ;Push 00000000//压入0
:004038B9  D6                              LeI4                       ;//冷!不知道啥意思,盼大虾指点!
:004038BA  2F1CFF                          FFree1Str                  ;SysFreeString [LOCAL_00E4]; [LOCAL_00E4]=0
:004038BD  1A20FF                          FFree1Ad                   ;Push [LOCAL_00E0]; Call [[[LOCAL_00E0]]+8]; [[LOCAL_00E0]]=0
:004038C0  1C5600                          BranchF                    ;If Pop=0 then ESI=004038C6------------------+
:004038C3  0003                            LargeBos                   ;IDE beginning of line with 03 byte codes    |
:004038C5  13                              ExitProcHresult            ;//退出?                                     |
:004038C6  0027                            LargeBos                   ;IDE beginning of line with 27 byte codes <==+
:004038C8  041CFF                          FLdRfVar                   ;Push LOCAL_00E4
:004038CB  21                              FLdPrThis                  ;[SR]=[stack2]
:004038CC  0F1403                          VCallAd                    ;Return the control index 07
:004038CF  1920FF                          FStAdFunc                  ;//呼叫下一功能
:004038D2  0820FF                          FLdPr                      ;[SR]=[LOCAL_00E0]
★★★★★★★★★★★★★★★★★★★★★★★★★★★
KuNgBiM可以提供一下这个程序的源码吗?我的邮箱在上面。多谢!
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
2
http://bbs.pediy.com/showthread.php?s=&threadid=19737

2005-12-25 14:51
0
雪    币: 272
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
多谢大哥关心!:)
2005-12-31 17:15
0
游客
登录 | 注册 方可回帖
返回
//