首页
社区
课程
招聘
[原创]ccfer2007(修正版)-简单分析
发表于: 2008-9-13 10:34 9660

[原创]ccfer2007(修正版)-简单分析

2008-9-13 10:34
9660

ccfer2007(修正版)-简单分析
  无聊到底,继续炒冷饭.跟踪的过程郁闷而无趣,备受折磨,找到关键代码也没什么喜悦.害得我在海边看沙滩美女都没什么感觉.终于在中秋前搞完.好在跟踪过程中,对vm的生成器有了点灵感,回头也写个vm生成器.

  最初两天,忍住不看源代码,不看提示.还在网上狂翻资料,恶补了柯西不等式.这个vm的opcode貌似简单,多数很好识别,写了几个od脚本跟踪记录,可只搞懂前面几句opcode是干什么的,后面成千上万的opcode不知其所云.各种手段都用了,没任何结果.
  其后只好看cc的源代码,貌似简单,还是不知它的vm里到底搞了些什么,算法都藏在vm里了,不过找到了几条之前没分析出来的关键的opcode(vcall,vretn,vset port,vget port),本以为应和vmp差不多,vcall,和vretn是突破口,跟了两天,还是没有结果.
  根据牛人指点,依照源代码写代码还原器,先写个动态的,看不出什么,又增加了静态的,将全部代码还原.后在button事件后逐条比对跟踪vm.在一个又一个循环中绕了两天.终于在醒悟,vset port,vget port是关键指令.
  终于,在跳出一个循环,经过两个vretn后,到达了一片从没到过的代码区.

简单记录如下:
1.OD载入运行,输入name和regcode.
2.设LBUTTONUP的消息断点.
3.中断后,在vmopcode的跳转处
004048FD >|.  83FA 0F       |cmp     edx, 0F                         ;  Switch (cases 0..F)
设条件断点[8f0048]=0x608
从8f0048开始是16个vm的寄存器,reg[0..16],reg[0]为Veip,reg[1]为Vesp,reg[2]为Veax.....这里设条件断点,是为了到达下面的关键代码区.
4.等几分钟,如果是和我一样的烂机器的话,可以先去冲个凉.
5.中断后,将004048FD处的条件断点更改为普通断点.数据显示区跳转到8f0048处.
6.参考如下还原的代码,f9单步运行vm指令.看见里面的vcall 07d3了吗?就是这个函数折磨了我几天,貌似里面是设置像素颜色和设置控件.
  6.1这段代码,先是校验regcode的合法性,要求其为数字和大写字母,长度为16个字符.
  6.2其后似乎有几段while循环干扰代码,分别对regcode进行加减乘除异或等运算,但运算结果被抛弃,这些可被nop掉.
  6.3最后就是关键运算代码了.


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

收藏
免费 7
支持
分享
最新回复 (10)
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
先回再看是好习惯
尤其是精华
2008-9-13 11:40
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
恭喜,功力越炒越高 , PF
2008-9-14 00:08
0
雪    币: 97697
活跃值: (200829)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
support.
2008-9-14 11:45
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
7
中秋快乐,给所有膜拜和被膜拜的人.
2008-9-14 23:08
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
8
看来没文档的情况下,理解CISC,即使有源码也不容易
2008-9-15 05:14
0
雪    币: 208
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
强烈支持!!
2008-9-17 18:30
0
雪    币: 461
活跃值: (93)
能力值: ( LV9,RANK:1170 )
在线值:
发帖
回帖
粉丝
10
一定要支持!
2008-9-18 20:10
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
support.
2009-9-29 22:21
0
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
support.
2009-10-1 11:50
0
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
13
进来支持一把
2009-10-1 19:58
0
游客
登录 | 注册 方可回帖
返回
//