首页
社区
课程
招聘
[求助]关于劫持DLL后获得原函数的参数,不知道怎么办
发表于: 2009-4-11 08:28 4403

[求助]关于劫持DLL后获得原函数的参数,不知道怎么办

2009-4-11 08:28
4403
RT
小弟劫持的是DlPORTIO.dll,不清楚传给它的参数怎么获得
由于是刚入门,没有用hook,救命啊

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
说清楚点啊 叫别人怎么帮你呢
2009-4-11 17:16
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
3
如果没有SDK头文件,可以尝试IDA分析一下,通过分析函数代码对堆栈和寄存器的访问情况来推测参数的个数,并且通过对代码语义的分析,大体上可以推断出参数的作用了。
2009-4-11 17:20
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
就是动态链接库的函数
如果劫持的话,怎么获得程序传过来的参数,并且把自己的值返回程序去
程序是调用dll的程序
2009-4-11 18:40
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
如果有的话,可以直接用吗??
这样可以吗??
ALCDECL AheadLib_DlPortReadPortUchar(IN ULONG Port)/////这里不清楚是不是可以这么写
{
       if(符合一定的值){
       ……
       自己的函数
       ……
       return   自己想返回的值; ///这里也不清楚可不可以
       }
       else
       {
                GetAddress("DlPortReadPortUchar");
                __asm JMP EAX;
        }
}
2009-4-11 18:48
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习中 顶一下
2009-4-13 20:05
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
7
那个jmp eax,需要注意:

1.如果原来函数是通过寄存器传递参数的,特别是Borland的编译器,会使用EAX来传递参数的,那么这样做会破坏寄存器。

  对DLL导出的函数,虽然不多见,但还是要查看一下比较好。

2.注意函数调用时栈帧的变化。一般编译器会自动插入类似 push ebp/mov ebp,esp + leave这样的指令,那么你就不能直接jmp eax了,需要先修改栈帧的结构,具体用什么指令,要具体看一下。
  对VC,使用__declspec(naked)修饰函数,可以阻止编译器自动插入对栈帧调整的指令,不过对naked函数,编译器有很多限制,比如会忽略其返回类型,不能初始化局部变量,不能有return语句等。通常naked函数是用完全用汇编来写的。
2009-4-13 20:27
0
游客
登录 | 注册 方可回帖
返回
//