首页
社区
课程
招聘
6
Riijj系列之cm12分析+注册机
发表于: 2013-1-29 17:06 9686

Riijj系列之cm12分析+注册机

2013-1-29 17:06
9686

Riijj系列之cm12分析+注册机
工具:IDA6.1+WinDBG
系统:WinXP sp3
CM :下载 riijjcm12.rar

  这个cm12还是比较有意思的,运行后程序会在系统临时目录中释放驱动文件thing.sys,
  然后以服务的形式启动,应用程序只负责创建窗体接收用户输入,驱动文件通过读取应用端内存获取输入内容并进行运算,比较序号是否合法。不过驱动部分的代码经过处理会影响IDA静态反汇编分析,只能在动态调试的过程中,追踪算法。关键是在内核模式调试驱动。
  先看下程序的流程
  1.应用程序部分
  
  驱动部分
      
根据流程图可知程序在驱动部分经过比较序号满足后会置全局标志位,这时应用端检测到标志位置位,就会通过系统地址调用系统函数MessageBox,不过这个函数地址也是由驱动传递过来的。
直接用IDA调试程序会导致系统重启,不知道是驱动部分有反调试还是系统原因。不过没关系可以用WinDBG直接在内核模式调试。
OK,现在开始:
IDA简单分析下
IDA载入cm12,启动后可以从左侧函数窗口定位到WinMain入口,双击即可如图3

在WinMain图表中浏览一遍会发现很熟悉的函数注册窗体类RegisterClassExA、创建窗体CreateWindowExA以及创建对话框CreateDialogParamA和消息循环及第二个
CreateDialogParamA。
注册窗体类紧邻下面有个call sub_40125F函数,他是释放资源并写入系统临时目录中的
如图4

2)紧邻UpdateWindow函数下call sub_4011C3函数负责,创建服务并启动接收驱动传递过来的字符串,目的是检测驱动是否正常启动。大家可以自己点进去分析很简单。
3)第二个CreateDialogParamA没有做什么操作,第二个CreateDialogParamA的回调函数创建了监听线程检测全局标志位,以及GetDlgItemTextA取对话框内容.
4)即便我们运行下cm12,从系统目录下取出thing.sys文件,用IDA打开也看不出什么信息,因为有反汇编处理,只能从导入表看到调用了那些函数而已,那么我们就从调试入手吧。
2开始调试
打开WinDBG双机模式运行,并且启动虚拟机同样以调试模式运行,(相关虚拟机设置就不介绍了,可以看这里http://hi.baidu.com/sososobad/item/07aabcc5e1a97d07e80f2e56 )
在启动菜单中选择系统调试启动后,WinDBG会打印信息并中断如图5

直接按F5运行,稍等片刻系统启动进入桌面后,运行cm12,WinDBG不会中断下来,因为没有下断点,那么我们怎么下断呢?
因为应用端的程序流程已经很清楚了,只需要分析下驱动部分,那我们调试无符号文件的驱动文件如何下断点呢,
有两种方法:
sxe命令下断
第一sxe ld:XueTr.sys                                                ;在入口下断
第二lmvm XueTr                                                        ;查看模块信息base地址即Start值
第三bp base+poi(poi(base+3c)+base+28)         ;下断POI是取值,仔细看下会发现就是定位PE头中的AddressOfEntryPoint地址
断下后就是驱动的入口了。
IopLoadDriver函数下断
第一bp nt!IopLoadDriver+0x663
第二F11步入Call dword ptr [edi+2ch]
即是驱动入口
不过这个驱动需要用第二种方法,而不能用第一种下断,XueTr可以用第一种第二种不适用
可能是程序实现方式不同。
那好,我们关闭cm12后,切换到WinDBG窗口,点击暂停按钮暂停系统,在命令窗口输入命令bp nt!IopLoadDriver+0x663回车如图6

可以通过bl命令查看下断是否成功,成功后按F5运行程序,在虚拟机中运行cm12,这时程序停在Now Loading……窗口,看下WinDBG已经断下了,单步F11执行两次第三次进入Call dword ptr [edi+2ch]就到达了驱动入口
可以用uf命令查看下程序大致代码,只有三个call完了就退出驱动了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
kd> uf f8a8f9a0
f8a8f9a0 56              push    esi
f8a8f9a1 e830000000      call    f8a8f9d6                   ;没做什么事情F10步过
f8a8f9a6 8b442408        mov     eax,dword ptr [esp+8]
f8a8f9aa b9bef8a8f8      mov     ecx,0F8A8F8BEh
f8a8f9af 50              push    eax
f8a8f9b0 c740348af8a8f8  mov     dword ptr [eax+34h],0F8A8F88Ah
f8a8f9b7 c74044eff8a8f8  mov     dword ptr [eax+44h],0F8A8F8EFh
f8a8f9be 894840          mov     dword ptr [eax+40h],ecx
f8a8f9c1 894838          mov     dword ptr [eax+38h],ecx
f8a8f9c4 e82dfeffff      call    f8a8f7f6                       ;初始化符号创建驱动设备
f8a8f9c9 8bf0            mov     esi,eax
f8a8f9cb e860fbffff      call    f8a8f530                       ;创建系统线程
f8a8f9d0 8bc6            mov     eax,esi
f8a8f9d2 5e              pop     esi
f8a8f9d3 c20800          ret     8
1
2
3
4
5
6
7
8
9
10
kd> uf f8b87530
f8b87530 51              push    ecx
f8b87531 33c0            xor     eax,eax
f8b87533 50              push    eax
f8b87534 68be74b8f8      push    0F8B874BEh
.....
f8b87555 ff15207bb8f8    call    dword ptr ds:[0F8B87B20h]
f8b8755b a3c87bb8f8      mov     dword ptr ds:[F8B87BC8h],eax
f8b87560 59              pop     ecx
f8b87561 c3              ret
1
2
3
kd> t
nt!PsCreateSystemThread:
805c8484 8bff            mov     edi,edi
1
2
3
kd> g
Breakpoint 1 hit
f8b874be 55              push    ebp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
kd> uf f8b874be
f8b874be 55              push    ebp
f8b874bf 8bec            mov     ebp,esp
.........
f8b874f1 6a64            push    64h
f8b874f3 e8c8fdffff      call    f8b872c0
f8b874f8 8365fc00        and     dword ptr [ebp-4],0
f8b874fc e8c5feffff      call    f8b873c6
f8b87501 eb07            jmp     f8b8750a
 
f8b8750a 834dfcff        or      dword ptr [ebp-4],0FFFFFFFFh
f8b8750e 833dc07bb8f800  cmp     dword ptr ds:[0F8B87BC0h],0
f8b87515 74da            je      f8b874f1
........
f8b8752b c9              leave
f8b8752c c20400          ret     4
1
2
3
4
5
6
7
kd> uf f8b872c0
f8b872c0 55              push    ebp
f8b872c1 8bec            mov     ebp,esp
.........
f8b872e3 ff15287bb8f8    call    dword ptr ds:[0F8B87B28h]
f8b872e9 c9              leave
f8b872ea c20400          ret     4

[注意]看雪招聘,专注安全领域的专业人才平台!

上传的附件:
收藏
免费 6
支持
分享
赞赏记录
参与人
雪币
留言
时间
伟叔叔
为你点赞~
2024-5-31 06:57
心游尘世外
为你点赞~
2024-5-31 03:52
QinBeast
为你点赞~
2024-5-31 03:42
飘零丶
为你点赞~
2024-4-2 04:17
shinratensei
为你点赞~
2024-2-4 00:33
PLEBFE
为你点赞~
2023-3-7 00:36
最新回复 (11)
雪    币: 1242
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
牛人,膜拜啊.
2013-1-29 17:16
0
雪    币: 13222
活跃值: (5928)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
来学习了,多谢楼主
2013-1-29 17:36
0
雪    币: 55923
活跃值: (21575)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
AJISky最近搞精华帖批发,呵~
2013-1-29 20:28
0
雪    币: 269
活跃值: (906)
能力值: ( LV12,RANK:345 )
在线值:
发帖
回帖
粉丝
5
近日公司年会了,手头没有什么任务,于是就一天写了一篇,多谢老大!
2013-1-29 20:32
0
雪    币: 302
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
WinDBG苦手表示学习了
2013-1-29 21:42
0
雪    币: 1040
活跃值: (1503)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
雪兔儿不能用第二种方法???我记得以前用的时候可以啊……第一次打开雪兔儿之前下断,应该可以断下来的好像……
2013-1-30 00:00
0
雪    币: 104191
活跃值: (202054)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
8
Thanks for share.
2013-1-30 03:25
0
雪    币: 42
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
收藏 多跟楼主学习,拜谢
2013-1-30 09:59
0
雪    币: 3784
活跃值: (3505)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢分享。。
2013-1-30 10:42
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rwx
11
必须向您学习,拜谢
2013-2-1 13:22
0
雪    币: 47
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
这个驱动给自己加了一个区段,入口点是那个riijj区段,等于加了壳,驱动入口处,进行解码.膜拜riijj和AJISky大牛,不知能加你们QQ好友不? :)
2013-3-1 01:36
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册