能力值:
( LV6,RANK:90 )
|
-
-
2 楼
兼容性最好的就是第3方案 引用多个数组就是了
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
同求~
|
能力值:
( LV6,RANK:80 )
|
-
-
4 楼
参考detours
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
目标函数的参数大于4个,多余的参数一样可以传递给代理函数 除此之外,还可以用线程局部变量来保存寄存器数据
|
能力值:
( LV9,RANK:280 )
|
-
-
6 楼
FF 25 00 00 00 00 + ULONG64 addr
|
能力值:
( LV4,RANK:55 )
|
-
-
7 楼
yy虫子yy
目标函数的参数大于4个,多余的参数一样可以传递给代理函数
除此之外,还可以用线程局部变量来保存寄存器数据
x64通常由rsp+偏移来寻址,如果把寄存器给压入栈,那真的还能寻到多余4个的参数吗? 另外,可否请教一下"用线程局部变量来保存寄存器数据"该怎么做?
|
能力值:
( LV4,RANK:55 )
|
-
-
8 楼
hzqst
FF 25 00 00 00 00 + ULONG64 addr
谢谢,不过我指的是执行代理函数的代码会破坏现场啦,
|
能力值:
( LV9,RANK:280 )
|
-
-
9 楼
FeJQ
谢谢,不过我指的是执行代理函数的代码会破坏现场啦,
pushfq+pushaq+call internalproxy+popaq+popfq
|
能力值:
( LV4,RANK:55 )
|
-
-
10 楼
hzqst
pushfq+pushaq+call internalproxy+popaq+popfq
这么一堆push,那可不就寻不到第5,6,7...个参数了吗?
|
能力值:
( LV9,RANK:280 )
|
-
-
11 楼
FeJQ
这么一堆push,那可不就寻不到第5,6,7...个参数了吗?
mov rcx, rsp然后自己从stack+offset取啊
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
FeJQ
x64通常由rsp+偏移来寻址,如果把寄存器给压入栈,那真的还能寻到多余4个的参数吗?
另外,可否请教一下"用线程局部变量来保存寄存器数据"该怎么做?
根据x64函数调用规则,以rsp+偏移的形式,超过4个参数由堆栈来传递 那么代理函数把第5个参数从堆栈中取出来,按照规则再入一次栈,就可以传递给原函数调用 而线程局部变量是为了多线程同时调用函数,使每个变量的数据都只对其所属线程可见 也就是说其作用域只存在于此线程,数据不会被别的线程破坏,根据这一点,就可以用作寄存器数据的保存
|
能力值:
( LV4,RANK:55 )
|
-
-
13 楼
yy虫子yy
根据x64函数调用规则,以rsp+偏移的形式,超过4个参数由堆栈来传递
那么代理函数把第5个参数从堆栈中取出来,按照规则再入一次栈,就可以传递给原函数调用
而线程局部变量是为了多线程同时调用函数, ...
感觉实现起来还是很棘手,不知有没有相关资料,代码,或x64内核hook库推荐?
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
FeJQ
感觉实现起来还是很棘手,不知有没有相关资料,代码,或x64内核hook库推荐?
棘手后才可以熟能生巧,怕棘手就干不成这事
|
能力值:
( LV4,RANK:55 )
|
-
-
15 楼
yy虫子yy
棘手后才可以熟能生巧,怕棘手就干不成这事
好的,谢谢啦
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
动态生成汇编跳板函数(汇编是为了将地址硬编码进去),在跳板内备份和恢复
最后于 2021-6-24 10:29
被不吃早饭编辑
,原因:
|
能力值:
( LV4,RANK:55 )
|
-
-
17 楼
不吃早饭
动态生成编写汇编跳板,在跳板内备份和恢复
请问“动态生成编写汇编跳板”是什么意思?
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
inline hook时别直接跳转到replace函数,先跳转到一级跳板函数内,在一级跳板函数内对寄存器和堆栈进行备份(为了保证能够将replace函数地址进行硬编码,需要使用汇编实现),调用原函数时,在真正执行原函数调用跳板前,先对寄存器和堆栈进行恢复即可。至于怎么硬编码进去,你怎么inline hook的就怎么硬编码进去咯
最后于 2021-6-24 10:32
被不吃早饭编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
本来实现inline hook只需要在调用原函数前调用一个执行被覆盖指令的跳板函数,现在为了对寄存器和堆栈进行备份,我们还需要一个在执行replace函数前的backup跳板,以及调用原函数前的recovery跳板
最后于 2021-6-24 10:32
被不吃早饭编辑
,原因:
|
能力值:
( LV4,RANK:55 )
|
-
-
20 楼
不吃早饭
本来实现inline hook只需要在调用原函数前调用一个执行被覆盖指令的跳板函数,现在为了对寄存器和堆栈进行备份,我们还需要一个在执行replace函数前的backup跳板,以及调 ...
明白啦, 感谢大佬
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
学习
|
能力值:
( LV1,RANK:0 )
|
-
-
22 楼
FeJQ
x64通常由rsp+偏移来寻址,如果把寄存器给压入栈,那真的还能寻到多余4个的参数吗?
另外,可否请教一下"用线程局部变量来保存寄存器数据"该怎么做?
hao
|
|
|