首页
社区
课程
招聘
ASProtect 2.11 SKE 到达OEP后如何修复stolen code里的call变形
发表于: 2006-9-4 08:37 4146

ASProtect 2.11 SKE 到达OEP后如何修复stolen code里的call变形

2006-9-4 08:37
4146
经过35次异常后进入最后一个call返回到这里:
00FA0273     6A 60                 push 60
00FA0275     51                    push ecx
00FA0276     64:EB 02              jmp short 00FA027B
00FA0279     CD20 669C56C1         vxdjump C1569C66
00FA027F     DE27                  fisub word ptr ds:[edi]
00FA0281     BE 86A44800           mov esi,48A486
00FA0286     83EE 3B               sub esi,3B
00FA0289     83DE 17               sbb esi,17
00FA028C     8D7424 1B             lea esi,dword ptr ss:[esp+1B]
00FA0290     83EE 1B               sub esi,1B
00FA0293     F3:                   prefix rep:
00FA0294     EB 02                 jmp short 00FA0298
00FA0296     CD20 8D743E06         vxdcall 63E748D
00FA029C     2BF7                  sub esi,edi
00FA029E     57                    push edi
略……

用工具修复,填写OEP=00FA0273-400000=BA0273,
---------------------------
Invalid RVA
---------------------------
Invalid OEP! It does not match in the process memory
---------------------------
确定   
---------------------------

无奈将OEP改为  A0273(虽然不对,但是修复了文件IAT是正确的)

怎么才能正确的找到真正的OEP。请教高手!

不知道如何继续下面工作。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 241
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
00DC8A87     8B45 F8               mov eax,dword ptr ss:[ebp-8]
00DC8A8A     0FB600                movzx eax,byte ptr ds:[eax]
00DC8A8D     8B5483 40             mov edx,dword ptr ds:[ebx+eax*4+40]
00DC8A91     8BC6                  mov eax,esi
00DC8A93     FFD2                  call edx
00DC8A95     3B45 FC               cmp eax,dword ptr ss:[ebp-4]
00DC8A98     75 1A                 jnz short 00DC8AB4
00DC8A9A     8B45 10               mov eax,dword ptr ss:[ebp+10]
00DC8A9D     50                    push eax
00DC8A9E     8B45 14               mov eax,dword ptr ss:[ebp+14]
00DC8AA1     50                    push eax
00DC8AA2     E8 19FAFFFF           call 00DC84C0
00DC8AA7     50                    push eax
00DC8AA8     8BCE                  mov ecx,esi
00DC8AAA     8B55 18               mov edx,dword ptr ss:[ebp+18]
00DC8AAD     8BC3                  mov eax,ebx
00DC8AAF     E8 D4FDFFFF           call 00DC8888
00DC8AB4     4F                    dec edi
00DC8AB5     0373 6C               add esi,dword ptr ds:[ebx+6C]
00DC8AB8     85FF                  test edi,edi
00DC8ABA   ^ 77 CB                 ja short 00DC8A87<------------------就是这个让人跳的头痛啊。
00DC8ABC     68 D88ADC00           push 0DC8AD8                             ; ASCII "111
"
00DC8AC1     E8 66C3FEFF           call 00DB4E2C
00DC8AC6     5F                    pop edi
00DC8AC7     5E                    pop esi
00DC8AC8     5B                    pop ebx
00DC8AC9     59                    pop ecx
00DC8ACA     59                    pop ecx
00DC8ACB     5D                    pop ebp
00DC8ACC     C2 1400               retn 14

===========================================================
我继续上面的伪OEP用F7跟进。来到一个这样的地方
00DC8ABA   ^\77 CB                 ja short 00DC8A87

我从6:10跳到 7:27 吃完饭回来跳到 8:22 发现一直在一段代码里跳
在这 ja short 00DC8A87 下个断硬断 F9 都执行不过去 按了好久还在那断
观察发现 ESI 由 00FAXXXX 一直增加。
如果清除硬断执行过去程序就执行了。实在无解。

这是怎么回事  请教
2006-9-4 08:50
0
雪    币: 208
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
在code段ctrl+f搜索jmp 00FA0273(如果这个地址是伪OEP的话),搜索到的地方就是真实OEP,可以在ir里面识别。然后有两种方法,一是从这儿开始手工修复,另外一种是补区段。
2006-9-4 09:19
0
雪    币: 208
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
00DC8AA2     E8 19FAFFFF           call 00DC84C0
00DC8AA7     50                    push eax
00DC8AA8     8BCE                  mov ecx,esi
00DC8AAA     8B55 18               mov edx,dword ptr ss:[ebp+18]
00DC8AAD     8BC3                  mov eax,ebx
00DC8AAF     E8 D4FDFFFF           call 00DC8888<-------------从这儿F7进去跟到一个jmp [XX-4]的地方下断,就是终点了
00DC8AB4     4F                    dec edi
00DC8AB5     0373 6C               add esi,dword ptr ds:[ebx+6C]
00DC8AB8     85FF                  test edi,edi
00DC8ABA   ^ 77 CB                 ja short 00DC8A87<------------------就是这个让人跳的头痛啊。
00DC8ABC     68 D88ADC00           push 0DC8AD8  

这是模拟call/jmp的第二层
2006-9-4 09:21
0
雪    币: 241
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
最初由 lidou 发布
在code段ctrl+f搜索jmp 00FA0273(如果这个地址是伪OEP的话),搜索到的地方就是真实OEP,可以在ir里面识别。然后有两种方法,一是从这儿开始手工修复,另外一种是补区段。


搜索到了
00FA0B16   ^\E9 58F7FFFF           jmp 00FA0273

怎么处理?谢谢

还有另一个

最初由 lidou 发布

00DC8AA2 E8 19FAFFFF call 00DC84C0
00DC8AA7 50 push eax
00DC8AA8 8BCE mov ecx,esi
00DC8AAA 8B55 18 mov edx,dword ptr ss:[ebp+18]
00DC8AAD 8BC3 mov eax,ebx
00DC8AAF E8 D4FDFFFF call 00DC8888<-------------从这儿F7进去跟到一个jmp [XX-4]的地方下断,就是终点了
00DC8AB4 4F dec edi
00DC8AB5 0373 6C add esi,dword ptr ds:[ebx+6C]
00DC8AB8 85FF test edi,edi
00DC8ABA ^ 77 CB ja short 00DC8A87<------------------就是这个让人跳的头痛啊。
00DC8ABC 68 D88ADC00 push 0DC8AD8

这是模拟call/jmp的第二层


也找到了
010200D9   - FF6424 FC             jmp dword ptr ss:[esp-4]                 ; Game.00553517
2006-9-4 12:12
0
雪    币: 207
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
多谢了,我仔细学习一下
2006-9-4 14:21
0
游客
登录 | 注册 方可回帖
返回
//