qq密码输入框保护组件TSSafeEdit中的花指令研究
来源:互联网 发布:土地测亩仪软件下载 编辑:程序博客网 时间:2024/05/17 08:40
看到了天易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目录下的原始文件,再开始调试,你会发现模块里的所有代码都变得很清晰了,
有兴趣的朋友一起来玩玩吧。
白菜贴,大牛飘过。
时间比较紧,先粗略地写一下,等晚上再详细补充。
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目录下的原始文件,再开始调试,你会发现模块里的所有代码都变得很清晰了,
有兴趣的朋友一起来玩玩吧。
- qq密码输入框保护组件TSSafeEdit中的花指令研究
- 保护密码输入框
- QQ2010密码输入框保护原理
- QQ2010密码输入框保护原理之我见
- QQ2010密码输入框保护原理之我见
- QQ2010密码输入框保护原理之我见
- 保护 QQ 密码的小技巧
- 七个小技巧保护QQ密码
- QQ密码框防键盘记录的研究笔记
- [AHK]自动输入qq密码
- 获得QQ聊天输入框中的内容
- 获得QQ聊天输入框中的内容
- 仿造QQ登陆框自定义密码输入框
- [Win32]获取QQ密码输入框所属进程ID
- QQ密码输入框(防键盘钩子)原理分析
- QQ密码输入框(防键盘钩子)原理分析
- Java swing 仿QQ实现账号密码输入框
- 一款简洁可自定义样式密码框输入组件GridPasswordView
- 【转载】魔兽争霸3的延迟外挂原理和制作
- 【原创】取FS:[0]的一个小技巧
- Android开发之:Adapter的继承结构
- 【原创】第一章:1.1、寻找main函数入口
- 【原创】WIN8 SSTD导出函数列表
- qq密码输入框保护组件TSSafeEdit中的花指令研究
- Android 实用工具Hierarchy Viewer实战
- 不能说的秘密之RtlAdjustPrivilege
- zz (C语言)共用体union的用法举例
- Android多线程:Looper和HandlerThread
- 让天之痕窗口化运行!
- 简单分析某个棋牌游戏的抢位置功能
- 【原创】Windows处理驱动Path流程
- 【原创】VMProtect代码还原技术