-
-
[求助]关于海风月影的 ApiHook库 内存异常错误
-
发表于:
2016-10-16 19:08
5383
-
[求助]关于海风月影的 ApiHook库 内存异常错误
最近用了 海风月影的Hook库 发现有些程序不知道为什么 当执行到 HookStub 这个区段的代码后就造成了内存访问执行异常,但是在其他的程序中可以完全使用没异常,再次不知道原因来看雪看看。
#pragma comment(linker, "/SECTION:HookStub,RW") // 读写权限 改成 RWE权限一样是不可以执行
#define ALLOCATE_HookStub ALLOCATE(HookStub)
#pragma code_seg("HookStub")
#pragma optimize("",off)
ALLOCATE_HookStub HOOKENVIRONMENT pEnv={0};
NAKED DWORD GetDelta()
{
__asm
{
call next
next:
pop eax
sub eax,offset next
ret
}
}
NAKED void NewStub()
{
__asm
{
jmp next
back:
_emit 0xE9
NOP
NOP
NOP
NOP
next:
push [esp]
push [esp]
push eax //保存一下Stub中唯一使用到的EAX
call GetDelta
lea eax,[eax+pEnv]
mov dword ptr [esp+0xC],eax
pop eax //恢复EAX
jmp back
}
}
NAKED DWORD GetEndAddr()
{
__asm
{
call next //执行Call 异常
next:
pop eax
sub eax,5
ret
}
}
#pragma optimize("",off)
#pragma code_seg()
12D27030 /EB 05 JMP SHORT 12D27037
12D27032 -|E9 90909090 JMP A36300C7
12D27037 \FF3424 PUSH DWORD PTR SS:[ESP]
12D2703A FF3424 PUSH DWORD PTR SS:[ESP]
12D2703D 50 PUSH EAX
12D2703E E8 DDFFFFFF CALL 12D27020
12D27043 8D80 0070D212 LEA EAX,DWORD PTR DS:[EAX+12D27000]
12D27049 894424 0C MOV DWORD PTR SS:[ESP+C],EAX
12D2704D 58 POP EAX
12D2704E ^ EB E2 JMP SHORT 12D27032
12D27050 E8 00000000 CALL 12D27055 ; <<---- 执行异常
12D27055 58 POP EAX
12D27056 83E8 05 SUB EAX,5
12D27059 C3 RETN
Log data, 条目 0
地址=773A15DE
消息=访问违规: 读取 [12D27050] // 这里是OD调试日志的异常 看了内存明显是可以访问的 就是没有运行的权限 但是别个的程序就可以 不解
不知道看雪还有没有往年前辈热情的解答
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法