首页
社区
课程
招聘
有关CC的几点认识
发表于: 2006-3-12 16:34 5841

有关CC的几点认识

2006-3-12 16:34
5841

有关CC的几点认识
1、什么是cc?
是arm的一种保护方式,把程序中的跳转改成int3,或者插入一些int3,由于int3反汇编后代码是cc,所以称之为cc保护,以上是我对cc名称的理解。
2、壳怎么识别cc?
壳里有表,里面记录了cc的地址,类型,目标,当加壳程序遇到cc时,壳会查表,实现正常功能。
3、如何修复?
当然是得到壳的表,然后改回去。
4、具体方法?
有很多,许多高人都有自己的方法,感觉heXer脱arm4.0的方法最方便,可惜我没学会,不过我发现使用ArmInline修复CC的一点心得:
根据ArmInline保存的文件手动修复,打开文件:
0000bda0h: 01 00 00 00 8A BA 42 00 A2 BA 42 00 18 00 00 00 ; ....?B.⒑B.....
0000bdb0h: 02 00 00 00 75 BB 42 00 7A BB 42 00 05 00 00 00 ; ....u宦.z宦.....
0000bdc0h: 02 00 00 00 7F BB 42 00 9B BB 42 00 02 00 00 00 ; ....宦.?B.....
0000bdd0h: 03 00 00 00 9D BB 42 00 B8 BB 42 00 02 00 00 00 ; ....?B.富B.....
0000bde0h: 03 00 00 00 BA BB 42 00 EC BB 42 00 02 00 00 00 ; ....夯B.旎B.....
0000bdf0h: 03 00 00 00 F9 BB 42 00 FE BB 42 00 05 00 00 00 ; ....?B.?B.....
第一个字节是跳转类型,单数一般是jnz,双数一般是jz,第5-8字节是cc所在地址,表示形式如下:00401234为34 12 40 00。第9-12字节是cc的目标地址,表示方式同前,第13字节是cc所在地址原来的字节数。
具体步骤:
用od载入dump文件,然后查找所有命令:int3,在所有int3上下断。
运行,会中断在int3处,然后在文件中查找地址如在0042BB7F中断,可以看到跳转是02,表示是jz,目标是0042BB9B,改好后就可以了,然后下一个继续。
另外,我发现如果是以下情况可以直接NOP掉5个字节:
cc地址和跳到的地址相差5个字节,则直接NOP掉5个字节,如上面最后一行的cc。
如果cc是由跳转而来,则直接NOP掉5个字节
如果cc后面还是cc,则继续NOP掉5个字节
如果cc出现在没有cmp、test、call的地方,一般NOP掉5个字节
如果点击菜单或按钮就碰到cc,则NOP掉5个字节
另外还要注意:
cc:
005A0B47      CC               int3
005A0B48      B0 C3            mov al,0C3
005A0B4A      06               push es
005A0B4B      FC               cld
005A0B4C      328B 83280300    xor cl,byte ptr ds:[ebx+32883]
005A0B52      00E8             add al,ch
修改后
005A0B47     /0F84 BF000000    je fix1.005A0C0C
005A0B4D     |90               nop
005A0B4E     |90               nop
005A0B4F     |90               nop
005A0B50     |90               nop
005A0B51     |90               nop
005A0B52     |00E8             add al,ch
005A0B54     |D8ED             fsubr st,st(5)
需要把出现的nop改回去:
005A0B47     /0F84 BF000000    je fix1.005A0C0C
005A0B4D     |8B83 28030000    mov eax,dword ptr ds:[ebx+328]
005A0B53     |E8 D8EDEBFF      call fix1.0045F930
否则就挂了,
另外,修改后保持断点是非常有用的,可以在修改失误或错误的情况下修正。
另外,cc在同一个程序里是有规律的。
另外,ArmInline提供的数据基本是对的,个别的并不准确,需要根据自己的经验识别
另外,我没有见到过其他类型跳转的cc,
另外,cc都是在关键的地方出现,包括注册关键处,如果修复好了,就能破解了。
另外,我一般只是修复注册处的cc,
另外,我以后不会再修复cc,太累。


[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 191
活跃值: (345)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
2
文章太好了。最好拿个只带几个 API 函数的程序做个例子就更容易理解了,请原谅我有点菜。呵呵。
2006-3-12 18:31
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
e5v
3
我以后不会再修复cc,太累。
2006-3-27 07:14
0
雪    币: 326
活跃值: (88)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
没有遇到过这种情况,楼主能不能传一个附件上来研究一下啊~
不过这种情况好像不用自己人手来修改吧。
2006-3-27 13:44
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好问学习了!楼主的头像是个女优吧
2006-3-27 20:40
0
游客
登录 | 注册 方可回帖
返回
//