首页
社区
课程
招聘
[旧帖] 求教一段反调试代码! 0.00雪花
发表于: 2010-7-19 01:51 3838

[旧帖] 求教一段反调试代码! 0.00雪花

2010-7-19 01:51
3838
004B4C88 E8 00000000 call 182.004B4C8D
004B4C8D 830424 2D add dword ptr ss:[esp],2D ; 设置int3中断的处理例程的内存地址,是4B4CBA。
004B4C91 64:FF35 00000000 push dword ptr fs:[0]
004B4C98 64:8925 00000000 mov dword ptr fs:[0],esp
004B4C9F 33C0 xor eax,eax
004B4CA1 CC int3 ; int3中断,正常执行时会跳到下面的4B4CBA(处理例程)
004B4CA2 64:8F05 00000000 pop dword ptr fs:[0]
004B4CA9 83C4 04 add esp,4
004B4CAC 85C0 test eax,eax
004B4CAE 74 04 je short 182.004B4CB4
004B4CB0 33C0 xor eax,eax ; 在正常执行时,返回值是0。
004B4CB2 EB 05 jmp short 182.004B4CB9
004B4CB4 B8 01000000 mov eax,1 ; 在调试器里,返回值是1。
004B4CB9 C3 retn
004B4CBA 8B4424 0C mov eax,dword ptr ss:[esp+C] ; int3的处理例程开始,以下四行代码是必要的。
004B4CBE C780 B0000000 FFFFFFFF mov dword ptr ds:[eax+B0],-1
004B4CC8 FF80 B8000000 inc dword ptr ds:[eax+B8]
004B4CCE 33C0 xor eax,eax
004B4CD0 90 nop ; 这里可以放入自己的代码,如对以后执行代码的解密,
004B4CD1 90 nop ; 或者预先设置以后执行的代码。在调试器里这些代码是不执行的。
004B4CD2 C3 retn


这里采用了INT3断点来区分调试器 还是真实执行!

问题:具体流程
如果是调试器运行到INT3后,会忽略掉断点,继续执行,一直执行到004B4CB9,然后返回
如果是真实程序是不是运行到INT3后,会跳到004B4CBA,去处理例程和后门的代码,那么004B4CA2---004B4CB9 中间的代码就不会被执行,对吗?如果是这样,那中间判断返回值是0 还是1 有意义吗?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 2523
活跃值: (520)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
SEH SEH
2010-7-19 09:05
0
雪    币: 5033
活跃值: (3434)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
3
你在论坛上搜一下,这个有源码,int3反调试
2010-7-19 10:02
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谁能详细说明下啊 ~~
2010-7-19 11:10
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
一切源于百度!
2010-7-19 12:56
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
期待大牛来点建设性的回帖~~
2010-7-21 16:30
0
雪    币: 998
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你从4b4cb9跟出去,外面对0和1有不同的后续处理。
2010-7-24 11:02
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习了一下,非常感谢!
2010-7-24 12:19
0
游客
登录 | 注册 方可回帖
返回
//