首页
论坛
专栏
课程

[调试逆向] [密码学] [其他内容] [原创]CrackMe011 | 玩个心理战直接口算 | 全新160个CrackMe深度解析(图文+视频+注册机源码)

2019-3-14 14:33 1907

[调试逆向] [密码学] [其他内容] [原创]CrackMe011 | 玩个心理战直接口算 | 全新160个CrackMe深度解析(图文+视频+注册机源码)

2019-3-14 14:33
1907

作者:逆向驿站

原文链接

CrackMe011 | 玩个心理战直接口算 | 160个CrackMe深度解析(图文+视频+注册机源码)


CrackMe011和8.9.10都是一个作者,依然是VB,我们利用上篇的总结,来搞这个吧!这是一个看似很复杂,但若逆向思考开发者开发心理后,抽丝剥茧,完全秒破,且口算注册码

准备


【环境和工具】

  • win7/xp虚拟机环境
  • olldbg
  • CrackMe011



【学习层次】

  • 搞定他
  • 学会揣测开发者的心理
  • 准确的直觉与验证的逻辑


图文分析


字符串入手入迷局

先观察程序,现象和发散猜测如下

  • 不能输入,只能点击(限制了输入的字符范围)
  • 没有确认按键(可能是靠changcode事件监测,大概率有timer循环)


开始老套路,搜索字符串,发现好多好多,类似的就有60组之多


找几个跟进去看看,发现反汇编代码基本一致,不仔细看根本看不出来除了地址有任何区别?

我们爆破一个看看,如下动图


发现,随便挑一个修改关键跳,就直接爆破了。但是这并不是我们的目的。

估计很多人到这里就蒙圈了,最起码会有一种放弃的惯性压迫感。现在我们开始逆向心理大法,根据我们获得的信息碎片,对开发者的心理和真实意图进行推测,我们得到的信息碎片有

  • 在这些字符串中的任何一个下断点,一下断点程序就暂停了
  • 没有输入任何字符,均会被断点暂停
  • 这些字符串看起来都很像,但又会有一些细微的差别
  • 字符串跟进去浏览上下反汇编代码,基本相同
  • 随便跟入一个字符串,定位关键跳,均可成功爆破
  • 根据这些信息碎片,推测如下线索
  • 一下断就停,那就是有timer
  • 即使没输入也在检测流程,程序的合理性和健壮性不高,可推测开发者很可能不是完美主义者
  • 看起来像,但又有细微差别,感觉特别像是把真的拷贝很多份,然后手动的换掉几个字母,推测是手段并不高明的混淆
  • 反汇编代码大量重复,证明源码也是大量重复,绝对不符合正常开发习惯,就是个开发小白也不可能写出重复60次的代码,而不写个函数调用的,进一步推测还是为了混淆视听
  • 随便一个地方都可以爆破,证明没有更复杂的验证机制,那么多重复代码同时在不停的检测判断,而任何一个符合就可以注册成功,这也绝对不符合软件安全的基本框架,到此甚至肯定了,这一切真的只是为了混淆
  • 总体来讲,欲盖弥彰,这样看来,这60段基本相同的代码,读懂一段,应该就离真相不远了

动态调试分析其中一段


发现有循环,而且是和字符串长度有关的循环



循环体实质内容,先截取字符串从左起的1个字符作为字符串(仔细观察会发现,大量重复的代码中,截取几个字符是不一样的,大概是从1-7不等),把这个字符串转化为10进制浮点数,存入[ebp-0xCC],例如我这里输入的是123,所以[ebp-0xCC]=1.000000



然后,在进行一个简单得浮点加法,是当前循环字符的asc码,加上[ebp-0xCC],我这里是1的asc码是49,加上1,所以结果是50,十六进制是0x32



下方快到循环体结束的地方,我们注意到了上篇文章提到的[ebp-0x34],这个在VB中经常会用于保存关键结果,那么我们直接F4到循环体尾部,手动控制每次循环,同时观察[ebp-0x34]中的变化,来推测源码,如下动图



我这里输入的是123伪码,总共循环三次,发现[ebp-0x34]三次的变化是

  • "032"→"03233"→"0323334",根据上面的信息,得出结论
  • "032"=转换16进制字符串(asc('1')+1)
  • "03233" = "032"+转换16进制字符串(asc('2')+1)
  • "0323334" = "03233"+转换16进制字符串(asc('3')+1)

算法就是这么简单



最后,这个字符串和那个长长的“081…………7B7C”做比较


抽丝剥茧,去伪存真,口算结果

上面的分析后,我们可以得到一个关键信息,根据算法算出来的字符串,应该是由16进制数字转换过来的,也就是说只可能是数字0-9,字母A-F,组成,含有其他的字母的长长的对比KEY全是不可能合规的假货。

接下来就是费眼的时刻,我们需要在字符串列表中,仔细看,看到F以上的字母,直接pass


最后找到一个合适的,强迫症的我全给看完了,60个真的只有这一个是合规的。

再来看看,这个真KEY相关的反汇编算法代码,不同之处除了KEY不一样,还有这个截取的字符串长度不一样,如图


知道了最终对比KEY,知道了算法,那么我们需要做的就是反推注册码了,把对比KEY按算法截取一下

0 81 7E 74 7D 7A 7D 7C 7F 82 83 6D 74 74 7A 7F 7E 7B 7C 7D 82 6D 81 7E 7B 7C

口算分析如下

  • 每个值都是0-9或*或#的asc码加上验证码头两位的结果
  • 而后者是固定值,前者是变化值
  • 所以结果的差就是注册码每位的asc码的差
  • 若是0-9,asc码是48-57,相差9
  • 而*和#的asc码分别是35和42,比较小
  • 而观察上面的数值,最小的是0x6D,其次0x74
  • 其余均集中于0x7A-0x83之间
  • 可以断定,0x6D对应的应该是*
  • 可以推出,验证码头两位是0x6D-35=74
  • 这样固定常量也有了,依次可以推出所有对应

如下表


算出注册码,填入测试,搞定

渗透中社工是门牛逼的学问,而逆向中同是,猜敌人之所想,方能所向披靡,去网盘中下载,试试吧 

https://pan.baidu.com/s/1YZqr9kFVu2R6R4rbgpepjQ 

提取码: q8tc


文章中涉及软件、课件、源码等均在网盘,为避免网盘链接失效,公众号中回复:网盘 

欢迎关注个人公众号:逆向驿站
 

相关文章


 CrackMe-8.9.10精解-VB反汇编特点汇总

● CrackMe-007精解

● CrackMe-006精解

● CrackMe-005精解(下)

● CrackMe-005精解(上)

● CrackMe-004精解

● CrackMe-003精解

● CrackMe-002精解

● CrackMe-001精解


本期标签:VB|VB反汇编|crackme|crackme11|crackme011|社工





[公告]安全测试和项目外包请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最后于 2019-3-14 14:39 被逆向驿站编辑 ,原因: 补个网盘地址
最新回复 (7)
逆向驿站 2019-3-14 14:41
2
0
fawcgzmg 2019-3-15 20:06
3
0
非常棒
马来 2019-3-16 00:47
4
0
支持
Goer_530246 2019-3-16 01:47
5
0
不得不支持
逆向驿站 2019-3-18 14:47
6
0
fawcgzmg 非常棒
谢谢
逆向驿站 2019-3-21 22:57
7
0
Goer_530246 不得不支持
谢谢
逆向驿站 2019-3-26 09:23
8
0
马来 支持
谢谢
游客
登录 | 注册 方可回帖
返回