首页
社区
课程
招聘
脱hying壳的一点疑问
发表于: 2005-9-22 00:07 5633

脱hying壳的一点疑问

2005-9-22 00:07
5633
hying的壳,走到OEP,call iat 都到壳里去了
004070BC    90                nop
004070BD    E8 FF82F7FF       call 0037F3C1
004070C2    8BC0              mov eax,eax
004070C4    90                nop
004070C5    E8 F782F7FF       call 0037F3C1
004070CA    8BC0              mov eax,eax
004070CC    90                nop

但跟进去后,就会取出一个错误地址,程序over了
0037F6F2    0385 FDF34000     add eax,dword ptr ss:[ebp+40F3FD]   
0037F6F8    2B85 21F44000     sub eax,dword ptr ss:[ebp+40F421]
0037F6FE    8B00              mov eax,dword ptr ds:[eax]
ds:[D69421E1]=???----->死在这里
eax=D69421E1
0037F700    894424 24         mov dword ptr ss:[esp+24],eax
0037F704    61                popad
0037F705    83C4 04           add esp,4
0037F708    C3                retn

搞了好长时间,看了很多脱文,自己太笨,请各位大侠指点一下,谢谢!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 241
活跃值: (21)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
前面有些保存的东西被你搞坏了。
2005-9-22 01:15
0
雪    币: 184
活跃值: (108)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
3
这个是一个无心插柳的结果,但是成了巨难绕过的坎,呵呵
2005-9-22 01:16
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
....
hying本人出来解问。..
2005-9-22 01:23
0
雪    币: 1
活跃值: (344)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 xuruifengc 发布
....
hying本人出来解问。..

hying真是好人
2005-9-23 14:56
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
6
看雪变态堂堂主3kkk
2005-9-23 23:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
前面有些保存的东西被你搞坏了。
2005-9-24 13:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不好意思,小弟没看清
2005-9-24 14:02
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
9
wangli_com可以搜索一下window的帖子
有一段解码密钥
2005-9-24 14:23
0
雪    币: 154
活跃值: (216)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
典型的 DRx 值checknum数错误。当到达OEP后的引入表调用时,会利用checknum解码,你下硬件断点后改变了DRx 的值,就会生成一个错误的 checknum 。故IAT解码也就出差了。在壳到达OEP前,会利用INT 3进入异常读取调试寄存器DRx的值生成checknum(这个INT 3之前会有一个INT 1 检测SOFTICE调试器以及反DUMP的代码,所以很好判断的)。从异常返回后就会保存这个checknum到壳的内存中以备IAT地址解码读取。你可以在此放入正确的checknum。(很久前我脱的0.7X是这样子的,不知道你的是不是这样子,请查证)
2005-9-24 15:46
0
雪    币: 282
活跃值: (233)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
11
谢谢大家的指点,这个被修改的地址我已经找到了,
0037F592    68 750706E1       push E1060775
0037F597    0385 3DF44000     add eax,dword ptr ss:[ebp+40F43D]
---------ss:[00380DBB]=f41f7f3b   
程序用调试寄存器DRx的值生成:[00380DBB]=f41f7f3b  这个值,用来解密iat地址,但解出来地址在iat地址的中间,应该是64f204的,他却到了64f206,仍然出现错误.

回复fly:   有一段解码密钥
我找过没有这段代码.
2005-9-24 16:20
0
雪    币: 282
活跃值: (233)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
12
搞定了,谢谢大家

设了个int3断点,校验出错了,死了好多回,哈哈!!!
2005-9-25 15:35
0
雪    币: 184
活跃值: (108)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
13
最初由 采臣・宁 发布
典型的 DRx 值checknum数错误。


并不是这个样子的,这个值和DRx没有联系,而是和全程效验和有关系.呵呵,过这个才大半呢,修复IAT还任务远哟
2005-9-25 18:17
0
游客
登录 | 注册 方可回帖
返回
//