能力值:
( LV2,RANK:10 )
|
-
-
2 楼
我想试过这样子:
ULONG a;
_asm
{
mov eax,eax
label:
mov ebx,ebx
}
a=(ULONG)label;
编译后,错误提示,label未定义;
请问怎么引用内联汇编里的代码地址啊?????
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
mov eax, offset label
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
要在_asm{}外面使用啊,你说的这句在里面就行得通,外面行不通,还是提示未定义..
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
如果有熟练引用代码地址的,说说看,没有的话,我用一些比较麻烦的写法。。
|
能力值:
( LV9,RANK:330 )
|
-
-
6 楼
void func()
{
__asm
{
mov,eax,xx
...
...
}
}
这样还不行?
DWORD asmadd = (DWORD)func;
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
int a;
_asm
{
call label
label:
pop eax
mov a,eax
}
看看行不?
|
能力值:
( LV9,RANK:140 )
|
-
-
8 楼
6楼、7楼的方法应该都行,7楼的方法应该好一些~
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
问题解决了,我不在内联汇编外面引用,全部放到里面写,本菜鸟第一次学会了绕过一个hook,从中学会了一点双机调试,对代码重定位更加了解了,加载到真实的机子上没有蓝屏。。
|
能力值:
( LV3,RANK:20 )
|
-
-
10 楼
怎么绕过Hook的?分享下?
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
代码写得太害羞了,就不贴了。就是把被人hook的那个地址附近的代码的本来的样子放到自己的驱动来执行,这些代码里如果有跳转或call的就用5个nop填充,待执行时,计算并写入要跳转的地址就是了,用个ulong来保存要写入的地址啊。这个地址的值=要跳到的地址-跳转指令所在地址-这条跳转指令占的字节数。。。call或jmp的机器码是0xe8和0xe9.。。。。。。
|
能力值:
( LV5,RANK:60 )
|
-
-
12 楼
ULONG a;
_asm
{
mov eax,eax
_label:
mov ebx,ebx
}
a=(ULONG)_label;
这样可以不?在label前加个下划线。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
ULONG Addr;
__asm
{
mov eax,eax
_label:
mov ebx,ebx
mov Addr, offset _label
}
这样是比较正常的用法....
|
|
|