170626 逆向-Crackme之005

来源:互联网 发布:vc 多线程编程 编辑:程序博客网 时间:2024/05/24 05:17

1625-5 王子昂 总结《2017年6月26日》 【连续第267天总结】

A.Crackme(5)

B.终于在XP中成功脱掉UPX的壳了,OD+DEDE动静结合看吧


DEDE中显示出有这些事件,逐个识别分析

两个计时器,Timer1是用来使四张图片循环滚动的;Timer2点开就是一堆cmp,猜测这个就是最终通过的地方了,到OP中跳转到相应RVA下断然后爆破,下方按钮变为注册了字样表示成功

那么分析一下Timer2的cmp分别是哪些吧,一一记录下来:

Timer2:
  304==C34
  308==230D
  310≠F94
  318==&314
  31C≠3E7

有5个全局变量的值要求,那么或者寻找这些值的赋值位置,或者先一一分析dede中显示的汇编代码

这里我先是把摆在眼前的汇编代码一一看下来了:

308初值 28E
30C初值 9
314初值 B
318初值 0
按下按钮ButtonDown:

左击时cl=0,右击时cl=1
  308≠230D时
      cl==1时308=308+3
      cl≠1且308小于294时 令308=230D


单击按钮ButtonClick:
  31C=3E7


鼠标移动FormMouseMove:
  2E0是图片3的ID,47是可见属性
  2DC是图片2的ID,

  [2E0+47]==1且X>e2且Y>12c时 310=10//图片3出现时,鼠标移动到右下角
  [2DC+47]==1且X<17且Y>12c且310=10且30C≠9时310=F94 //图片2出现时,鼠标移动到左下角
30C==0时 314=41
30C==1时 314=3D
30C==2时 314=34
30C==3时 314=DF
  310==F94时进行getText和StrCmp,若txt='ajj'则把30C的值显示出来
 
双击Text2时:
  当text1的长度是3的倍数、text2的第二位是'_',第六位是','时
 30C=0/1/2/3


双击Pannel(即图片框的空白部分):
  308==29D时 dl=1
使edit2可用


bl表示button,即左击或右击
图片1点击:
  bl==0时318+2
  bl==1时318+0x11


图片2点击:
  bl==0时318+3
  bl==1时318+0x13


图片3点击:
  bl==0时318+5
  bl==1时318+0x17


图片4点击:
  bl==0时318+7
  bl==1时318+0x1B

由于dede的反汇编参考没有参数,所以刚开始函数中的bl、cl等等都不明白什么意思

后来参考了一下另外一篇,才知道应该是左击右击、坐标等等的参数

其实应该想到的。学到啦


另外,每个控件都有一个ID,在IDA中可以直接搜索字符串来查找

当检测和获取属性的时候都会通过ID来指定


大体上通过函数分析以后就能明白顺序了,其他遗漏的参数赋值找不到的话就通过IDA的搜索功能,这是非常方便的


注意有一个Edit2DblClick事件,在第一行地址下断,双击文本框发现并没有触发

到FormCreat事件中寻找,发现了第二个Edit控件,在IDA中搜索该控件的ID,然后到OD中下断跟踪

发现在00446D49处有一个获取 X:\ajj.126.c0m\j\o\j\o\ok.txt 文件的API,下面有与“ajj写的CKme真烂!”比较的StrCmp
。通过这个判断会改变Edit2的一个属性,猜想应该就是可见了。

X盘符有点麻烦,幸好我是在虚拟机中处理的

出现Edit2以后还是不可用的,继续搜索该控件相关的事件,跟到了Panel1DblClick事件

另外一篇分析中提到了dl=0和dl=1的控制方法

之前分析的时候只看到了dl=1,然后进入一个call,这个call不知道是干啥的

由控件ID相关猜测是令Edit2可用的改变,那么要让308=29D,只需要右击按钮5次即可(左击会触发Click事件使得注册失败)

总结:

首先创建X:\ajj.126.c0m\j\o\j\o\ok.txt ,内容为“ajj写的CKme真烂!”,使得Edit2出现,同时304=0xC34

然后右击注册按钮5次,使308=29D

然后双击图片空白处,使Edit2可用

接着输入注册名和Edit2,要求为注册名长度是3的倍数,Edit2的长度为8,第二个字符为'_',第六个字符为','

然后双击Edit2,,计算出30C的值

在图片3可见时把鼠标移动到右下角,使310=10

在图片2可见时把鼠标移动到左下角,使310=F94,并计算出314的值

然后将注册名改为ajj,此时将会显示出30C的值

然后再在图片3可见时把鼠标移动到右下角(否则也会注册失败)

显示的值和图片的对应点击办法有多种情况,自由计算,只要最终318=314即可



更详细的思路参考http://www.52pojie.cn/thread-366291-1-1.html,这个CM非常复杂,虽然折腾了一下午加一晚上,但是学到了很多新东西,很有价值

C. 明日计划

CISCN

原创粉丝点击