首页
论坛
课程
招聘
[原创]qq密码输入框保护组件TSSafeEdit中的花指令研究
2011-7-16 17:51 14053

[原创]qq密码输入框保护组件TSSafeEdit中的花指令研究

2011-7-16 17:51
14053
看到了天易love的影响,也想写一点东西,和大家分享一些研究的心得体会,也算是做一个小小的笔记。
白菜贴,大牛飘过。

时间比较紧,先粗略地写一下,等晚上再详细补充。

TSSafeEdit是QQ的密码输入框保护组件,在Tencent\QQ\Bin目录下可以找到。
这个文件我已从2009年一直跟踪到现在
期间它的版本有过好几次更新,目前的最新版本应该是2011.4.7.1。

TSSafeEdit的代码中大量地使用了花指令,基本上,每一句正常代码之后都放有一个花指令。
像这样,

函数()
{
   正常程序代码
   花指令
   正常程序代码
   花指令
   正常程序代码
   花指令
   正常程序代码
   花指令
   正常程序代码
}

这些花指令,给分析TSSafeEdit造成两方面的麻烦。

(1)在OD里调试时,大批的花指令扰乱了od的反汇编,当你滚动反汇编窗口时,里面的汇编指令经常会随之变化,影响了反汇编分析。
(2)含有这些花指令的函数,在IDA中反汇编会失败,因此不能被F5。

于是,我下决心把它们清理掉。经过仔细观察,发现TSSafeEdit里一共含有两种形式的花指令,分别是

/*
   51                 push ecx......①
   E804000000         call xxx
   ??
   ??
   EB10               jmp yyy......⑤
   59                 pop ecx......②
   EB02               jmp a
   ??
   ??
   83C102             add ecx, 2......③
   EB02               jmp b
   76
   90
   51                 push ecx......④
   C3                 ret
   ??
   ??
   59                 pop ecx......⑥
*/

/*
   51                 push ecx......①
   E806000000         call xxx
   ??
   ??
   ??
   ??
   EB10               jmp yyy......⑤
   59                 pop ecx......②
   EB02               jmp a
   ??
   ??
   83C104             add ecx, 4......③
   EB02               jmp b
   76
   90
   51                 push ecx......④
   C3                 ret
   ??
   ??
   59                 pop ecx......⑥
*/

执行到花指令时,执行流依次经过圆圈里标识的序号,从1到2,从2到3,...,直到6,之后执行6下面的正常程序代码。
其中,??是执行流不会经过的地方,所以可以是任意一个字节,可以把这里当作通配符。

根据这些特征,就可以用一个脚本把所有花指令都nop掉了。
这样,分析TSSafeEdit时,就没有以上两个障碍了。

另外,我们还可以学习腾讯的方法,把这些模型的花指令运用到自己的代码里,来保护自己的程序。

具体的我就不做了,大家可以自己去试试。

为了让大家更好地研究密码安全组件的设计原理,我提供一个TSSafeEdit v2011.4.7.1脱壳去花后的版本。
用它替换掉Tencent\QQ\Bin目录下的原始文件,再开始调试,你会发现模块里的所有代码都变得很清晰了,
有兴趣的朋友一起来玩玩吧。

[公告]请完善个人简历信息,好工作来找你!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (15)
雪    币: 0
活跃值: 活跃值 (11)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
tihty 活跃值 2 2011-7-16 17:58
2
0
代码对齐真难弄..
雪    币: 49
活跃值: 活跃值 (14)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
邓韬 活跃值 9 2011-7-23 21:56
3
0
膜拜一下,学习了!!!!!!!!!
雪    币: 230
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
heiketian 活跃值 2011-7-24 01:10
4
0
估计花的量比较大、原理还是很简单的。自定位加上多重跳…
雪    币: 299
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
baohongyu 活跃值 2011-7-24 09:41
5
0
先赞下,公开思路和经验更宝贵
雪    币: 206
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
djog 活跃值 2011-7-25 00:18
6
0
支持~~~~~~~~~~
雪    币: 223
活跃值: 活跃值 (17)
能力值: ( LV11,RANK:188 )
在线值:
发帖
回帖
粉丝
XPoy 活跃值 3 2011-7-25 07:19
7
0
感谢分享, /:^] 最近在研究这个python脚本,也是用来去除花指令的,分享一下:
http://code.google.com/p/optimice/
雪    币: 0
活跃值: 活跃值 (11)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
tihty 活跃值 2 2011-7-25 08:36
8
0
感谢分享, /:^] 最近在研究这个python脚本,也是用来去除花指令的,分享一下:
http://code.google.com/p/optimice/


thanks for share :)
雪    币: 71
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mumaren 活跃值 2011-7-25 21:02
9
0
thx

very good
雪    币: 30
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ropin 活跃值 2011-7-26 10:57
10
0
感谢,最近正在看这方面的东西
雪    币: 130
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zzcc 活跃值 2011-7-26 19:39
11
0
厉害。。。。。。
雪    币: 261
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
still 活跃值 2011-7-27 10:48
12
0
TSSafeEdit.DAT至少在08年的时候就有了,呵呵
雪    币: 219
活跃值: 活跃值 (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
justto 活跃值 2011-7-27 22:43
13
0
牛人!~~     ~
雪    币: 84
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cghook 活跃值 2011-7-28 11:38
14
0
如此花有毛用
codedoctor一拉全没了
至于你们信不信 我反正是信了
雪    币: 579
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ydfivy 活跃值 2011-9-28 13:53
15
0
Thanks for helping......
this word mean a lot to me.
雪    币: 71
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
东方容克 活跃值 2011-9-28 18:45
16
0
谢谢分享。

腾讯的保护真不怎么样。花指令只有2种形式而已..
核心部分起码应该加上虚拟机保护呵~
游客
登录 | 注册 方可回帖
返回