前几日看到 sdher 兄弟发的贴子,就随便跟上去胡说几句
今日闲来无事,发现其问题没有解决,愚决定试上一把
这里我不把这个软件的功能和名字列出来了,需要的看一下 sdher 兄弟的帖子就行了.
声明:本人对于VB的东西比较头疼,前日几日调了一个N-CODE的,不管怎么样,还是自己比较熟悉的386指令,但对于P-CODE用的伪指令,苦于没有找到一篇技术文档,再加上没有找到别人写的分析文章,所以一直也没有搞明白,今天了不明白,所以大家不要指望我能将算法分析出来,
不过我仅花了一个多小时便从内存里抓出了注册码,可见这个软件的难度并不大
这里将我的结果贴出来,就当是给 sdher 兄弟引路了
另外我还无法上传截图,而WKT中又不像OD那样方便地复制格式,所以很多地方我就只是用文字描述,大家看着可能费点劲,请见谅
从兄弟提供的永硕网络硬盘上拿到样本,兄弟已经把壳脱好了,于是也就不去多费时间了,直接进入主题
用OD载入,提示有加密,看代码区,已经脱壳,应该是壳比较厉害的原因,不管它,在OD里看到入口点是典型的P-CODE
于是操起WKTDEBUGGER将其载入.
可能因为脱壳不干净的原因,exdec无法分析,所以只能够从WKT中小小的窗口来看它的代码,很痛苦啊
程序一运行,便提示没有检测到什么什么设备,点确定后退出了...
重新载入,在WKT中下API 断点 rtcMsgBox,GO
断下后点 analyze branch
看到解4e7fac : branchF 4e7f29
于是将这里的branchF 改为 branchT,即将字节1C改为1D
点GO
好进入程序界面
打开注册界面,"注册"按键是灰色的.
先往注册码的位置输入很长的字串,看看是不是当长度达到某一个值时才激活"注册"按钮...
结果不是
那么分析判断是不是合法注册码的代码应该在文本框控件的 OnTextChange()方法中
在WKT中点 form manager ,定位到 frmRegister 上的 TextBox控件txtRegister,然后点BPX
点GO运行程序
在注册码的位置随便输入,"当",WKT弹出...
点 analyze branch 看到几个跳转
先尝试爆破...
最后确定最下面的一个 4c6f98 : branchF 4c6eb2
将它修改后,再输入符"注册"被激活,但点击没有反应,说明在"注册"按钮的 OnCommand()过程中还进行合法性验证.于是爆破先不管
来到这个跳转处,往上看,看到几条指令
004C6F93: 6C ILdRf 00202CFCh
004C6F96: 6C ILdRf 09530854h
004C6F99: 30 EqStr
在内存窗口里打开这两个地址,一个是输入的码,另一个便是注册码了...
于是利用WKT把内存DUMP到一个文本文件中,注意由于VB用 uni code 所以有一些不能显示的小点,
但你应该能看到你的注册码了吧...
好了,如果你有耐心看完了,应该就能追出自己的注册码了.
对于注册算法的事情,我已经定位了计算的位置,对VB P-CODE熟的朋友自己追就行了,
我就写这么多了...
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课