能力值:
( LV2,RANK:10 )
|
-
-
2 楼
说清楚点啊 叫别人怎么帮你呢
|
能力值:
(RANK:260 )
|
-
-
3 楼
如果没有SDK头文件,可以尝试IDA分析一下,通过分析函数代码对堆栈和寄存器的访问情况来推测参数的个数,并且通过对代码语义的分析,大体上可以推断出参数的作用了。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
就是动态链接库的函数
如果劫持的话,怎么获得程序传过来的参数,并且把自己的值返回程序去
程序是调用dll的程序
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
如果有的话,可以直接用吗??
这样可以吗??
ALCDECL AheadLib_DlPortReadPortUchar(IN ULONG Port)/////这里不清楚是不是可以这么写
{
if(符合一定的值){
……
自己的函数
……
return 自己想返回的值; ///这里也不清楚可不可以
}
else
{
GetAddress("DlPortReadPortUchar");
__asm JMP EAX;
}
}
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
学习中 顶一下
|
能力值:
(RANK:260 )
|
-
-
7 楼
那个jmp eax,需要注意:
1.如果原来函数是通过寄存器传递参数的,特别是Borland的编译器,会使用EAX来传递参数的,那么这样做会破坏寄存器。
对DLL导出的函数,虽然不多见,但还是要查看一下比较好。
2.注意函数调用时栈帧的变化。一般编译器会自动插入类似 push ebp/mov ebp,esp + leave这样的指令,那么你就不能直接jmp eax了,需要先修改栈帧的结构,具体用什么指令,要具体看一下。
对VC,使用__declspec(naked)修饰函数,可以阻止编译器自动插入对栈帧调整的指令,不过对naked函数,编译器有很多限制,比如会忽略其返回类型,不能初始化局部变量,不能有return语句等。通常naked函数是用完全用汇编来写的。
|
|
|