-
-
[旧帖] [讨论]一个番墙软件中利用tls模糊入口点的壳 0.00雪花
-
发表于: 2015-11-18 14:30 2045
-
发现一个用VB写的番墙软件
超过1MB只能用网盘了,样本下载地址:http://pan.baidu.com/s/1dDltv9n
PS: 这个软件能用的,简单看了下行为好像也没有什么恶意行为.. 但是最好还是在虚拟机里分析吧,主要想试试能不能把壳脱下来。。
查了下壳,PEID显示“什么也没有发现”
但是发现有两个名为.kijuhy0 \ .kijuhy1的节,而且是通过注册.tls来实现外壳代码的执行的,但是由于水平原因,不能正确地找到OEP和真实IAT,完全没有思路。。
想请大家指导一下脱这个壳的大致思路,实在不懂了= =。。先谢谢了
下面说一下我自己尝试后失败的思路吧:
TLS表如下:
->TLS Table
StartAddressOfRawData: 0x004FE000
EndAddressOfRawData: 0x004FE014
AddressOfIndex: 0x004FE018
AddressOfCallBacks: 0x00500790
SizeOfZeroFill: 0x00000000
Characteristics: 0x00000000
0x00500790处: 4D 97 50 00
查看PE头知道入口点RVA被修改成 10D493,ImageBase是400000,载入exe后,在 50D493处下内存访问断点(壳中有对cc断点的判断),来到50D493后把堆栈和寄存器记录保存下来作参考。
首先用esp法尝试失败,用二次断点法先在.data节下内存 写入断点,这时观察到.text节已经还原,在.text节下内存访问断点(不是F2),F9,中间有多次在外壳代码中中断,然后来到004078C8E,这时来到.text节(1000-79000)中了
00478C8E 27 daa
00478C8F - 0F8C 5D6D0000 jl v{过}p{滤}nclien.0047F9F2
单步跟进,发现到00478C8F又 跳转到0047F9F0,这个地址是外壳中.kijuhy0节的地址。继续F9,来到004012A5
004012A5 0FB6C1 movzx eax,cl
004012A8 A9 E35AA8F3 test eax,0xF3A85AE3
004012AD 8D47 50 lea eax,dword ptr ds:[edi+0x50]
但是怎么看这里也不像OEP。。Dump下来后将.tls目录清空,修改入口点为12A5,就可以使程序从4012A5开始了,但是找不到IAT,所以修复不了导入表,也就没办法验证OEP是不是12A5了。。
想用最后一次异常法,但是只用这个方法脱过几次,这个软件的异常只有一个int3,下内存访问断点来到异常处理函数后,就不知道怎么做了,单步肯定是跑不到的- -
求各位指点一下,求思路....
超过1MB只能用网盘了,样本下载地址:http://pan.baidu.com/s/1dDltv9n
PS: 这个软件能用的,简单看了下行为好像也没有什么恶意行为.. 但是最好还是在虚拟机里分析吧,主要想试试能不能把壳脱下来。。
查了下壳,PEID显示“什么也没有发现”
但是发现有两个名为.kijuhy0 \ .kijuhy1的节,而且是通过注册.tls来实现外壳代码的执行的,但是由于水平原因,不能正确地找到OEP和真实IAT,完全没有思路。。
想请大家指导一下脱这个壳的大致思路,实在不懂了= =。。先谢谢了
下面说一下我自己尝试后失败的思路吧:
TLS表如下:
->TLS Table
StartAddressOfRawData: 0x004FE000
EndAddressOfRawData: 0x004FE014
AddressOfIndex: 0x004FE018
AddressOfCallBacks: 0x00500790
SizeOfZeroFill: 0x00000000
Characteristics: 0x00000000
0x00500790处: 4D 97 50 00
查看PE头知道入口点RVA被修改成 10D493,ImageBase是400000,载入exe后,在 50D493处下内存访问断点(壳中有对cc断点的判断),来到50D493后把堆栈和寄存器记录保存下来作参考。
首先用esp法尝试失败,用二次断点法先在.data节下内存 写入断点,这时观察到.text节已经还原,在.text节下内存访问断点(不是F2),F9,中间有多次在外壳代码中中断,然后来到004078C8E,这时来到.text节(1000-79000)中了
00478C8E 27 daa
00478C8F - 0F8C 5D6D0000 jl v{过}p{滤}nclien.0047F9F2
单步跟进,发现到00478C8F又 跳转到0047F9F0,这个地址是外壳中.kijuhy0节的地址。继续F9,来到004012A5
004012A5 0FB6C1 movzx eax,cl
004012A8 A9 E35AA8F3 test eax,0xF3A85AE3
004012AD 8D47 50 lea eax,dword ptr ds:[edi+0x50]
但是怎么看这里也不像OEP。。Dump下来后将.tls目录清空,修改入口点为12A5,就可以使程序从4012A5开始了,但是找不到IAT,所以修复不了导入表,也就没办法验证OEP是不是12A5了。。
想用最后一次异常法,但是只用这个方法脱过几次,这个软件的异常只有一个int3,下内存访问断点来到异常处理函数后,就不知道怎么做了,单步肯定是跑不到的- -
求各位指点一下,求思路....
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
看原图
赞赏
雪币:
留言: