-
-
CrackMe 2005#1 by KuNgBiM追码
-
发表于:
2005-12-11 17:46
6055
-
CrackMe 2005#1 by KuNgBiM追码
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期)