首页
社区
课程
招聘
6
Riijj系列之cm9分析+注册机
发表于: 2013-1-26 21:03 9674

Riijj系列之cm9分析+注册机

2013-1-26 21:03
9674

Riijj系列之cm9(花指令)分析
工具:IDA6.1
系统:WinXP sp3
CM :下载 riijjcm09.rar

首先向大家道歉,代码注释排版一直整理不好,还是很乱,请原谅,知道的兄弟也请告知谢谢~
  前几天不知怎的对riijj的cm对上眼了,于是"兽性大发"一口气将cm9-cm14,分析了一遍,发现其中还是有不少"猫腻"的,反正对于我来讲通过分析这几个cm,自身的调试能力有了不少的提升,其中乐趣不敢独享,贴出来同大家分享,希望能够帮助到对这几个cm有疑惑的朋友。
  先简单介绍下这几个cm
  Cm09是个轻量级的跳转花指令。
  Cm11中一系列的反调试处理及万恶的浮点数五元方程组算法。
  cm12中算法及弹窗部分实现在驱动中,并且驱动部分加了花指令,即使用IDA查看流程也找不出什么蛛丝马迹,必须动态调试,对于没有没有调试过驱动的同学们,是个不错的练习。当然操刀工具就是传说中的WinDBG了。
  Cm13中主程序A创建调试进程B,并且通过调试事件写入进程B一条代码,执行后清除,再写入下一条,执行,清除依次循环,期间通过int3异常事件通知主程序A进行写入操作。这个算法也是在进程B中的,不通过调试也看不到有用的信息。而进程B已经被进程A调试了,如何找到调试B的方法是关键。
  Cm14中类似cm11的反调试及反系统调试工具,有两个算法部分,关键看你怎么定位到真正的那一个。
  这几个有个共同特点就是,你拿OD调试是很难得,比如花指令跳来跳去你怎么分析,调试驱动就更不行了。所以我后来很少用OD调试,主要用IDA或者WinDBG调试,
  上调应用,下调驱动,能屈能伸,其乐融融。
  好了不废话了,今天先分析下cm9
  如果你不信,可以先拿OD载入看下如图
  
  入口处一目了然,代码中夹杂着数据,很明显的花指令,并且一执行便是跳转,你怎么来有感情的阅读此cm,并且联系上下文分析呢?
  所以还是用IDA吧。
  直接将该cm9图标拖到IDA图标上即可,弹出选择文件默认为PE格式文件,点击确定,稍等片刻分析结束后停在程序入口处如图
  
  第一次使用IDA先选择调试器,否则无法调试程序。在菜单Debugger下Switch debugger弹出框选择Local Win32 debugger,确定即可。
  之后无许多虑,先看下有没有比较猫腻的函数,点击上面一栏Imports导入函数页查看
  调用的函数,为方便查看可以通过点击Name标题来自动按函数顺序排序,依次向下查看发现有GetDlgItemTextA函数,
  
  鼠标双击函数跳转到导入表的地址行,在函数名上右键选择Jump to xref Operand,发现有两处调用如图
  
  双击第一个call跳转到代码中引用该函数的地方(显示可以是图形模式也可以是代码模式,可以通过空格键切换,也可以用右键选择Text View/Graph View切换)按F2键下断会变红色,否则调试器可能没有选对。
  
  然后按Esc返回GetDlgItemTextA函数处继续选择第二个call下断方法同上。
  可以试验下断点是否正确,按F9运行程序,弹出cm对话框,点击注册按钮,程序会断在断点处,并且断点变为粉红色。
  好了这时仔细看下代码发现多是如下形式
  

1
2
3
4
5
6
7
push    eax
  push    offset loc_414F64
  Retn
  Local_414F64:
  Call edi
  push    offset loc_41752F
  Retn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
push      32h
    push      eax
    push      3E8h
    push      ecx
    call      edi ; GetDlgItemTextA              ;GetDlgItemTextA取Name框内容
    mov      esi, eax                     ;存储Name长度Len_Name
    lea       edx, [esp+0Ch+arg_84]
    mov      eax, dword_4326B0  
    push      32h
    push      edx
    push      3E9h
    push      eax
    call      edi ; GetDlgItemTextA              ;GetDlgItemTextA取Serial框内容
    test      esi, esi
    mov      ebx, 17B85h
    jz        loc_412D34                  ;Len_name=0则退出
     cmp      eax, 14h
    jb        loc_412D34                  ;Len_Serial<20则退出
    xor       ecx, ecx
  loc_410CC9:                        ;int i=0,j=0x17B85,k,m;    
    mov      eax, ecx                    ;{  
    xor       edx, edx
    div       esi                      ;i%Len_Name
    mov      eax, ebx      
    mov      ebx, 1C9h
    imul      eax, 1E8Fh                  ;k=0x17B85*0x1E8f(带符号乘)
    movsx    edi, [esp+edx+0Ch+arg_1C]            ;m=Name[i%Len_Name]
    xor       edx, edx
    div       ebx              
    add       edi, edx                    ;m=m+k%0x1C9
    inc       ecx                      ;i++
    mov      ebx, edi        
    cmp      ecx, 32h            
    mov     byte ptr [esp+ecx+0Ch+anonymous_0+3],bl      ;保存结果到Mem1[i-1]=m&0xFF
  ;}
    jb      loc_410CC9                  ;while(i<0x32)
  

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

上传的附件:
收藏
免费 6
支持
分享
赞赏记录
参与人
雪币
留言
时间
伟叔叔
为你点赞~
2024-5-31 06:56
心游尘世外
为你点赞~
2024-5-31 03:51
QinBeast
为你点赞~
2024-5-31 03:41
飘零丶
为你点赞~
2024-4-2 03:51
shinratensei
为你点赞~
2024-2-4 00:07
PLEBFE
为你点赞~
2023-3-7 00:37
最新回复 (7)
雪    币: 56023
活跃值: (21355)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
对 Riijj研究的很透,呵~
2013-1-26 21:23
0
雪    币: 269
活跃值: (906)
能力值: ( LV12,RANK:345 )
在线值:
发帖
回帖
粉丝
3
多谢老大加“精”,终于破处了,见红了,哈哈~加油继续
2013-1-26 21:39
0
雪    币: 1925
活跃值: (906)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
4
看点还是在花指令上哦
2013-1-26 21:48
0
雪    币: 473
活跃值: (238)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
期待后面的cm解说。。。
2013-1-26 22:34
0
雪    币: 42
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
简单易懂 收藏鸟,期待后续
2013-1-26 23:02
0
雪    币: 102766
活跃值: (201864)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
7
Thanks for share.
2013-1-26 23:40
0
雪    币: 2375
活跃值: (433)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
rijjj大仙最近怎么了,好几年不上线了:(
2016-11-18 11:21
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

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