首页
社区
课程
招聘
[求助]关于导出函数地址一样的问题
发表于: 2018-7-19 22:48 3537

[求助]关于导出函数地址一样的问题

2018-7-19 22:48
3537

事情是这样的:
我写了29个导出函数(不要问我来干什么/手动滑稽)

然后这29个函数都是一个jmp,至于jmp到哪里,是DLL被加载之后获取官方原版的函数地址跳过去的。

所以我是写的个临时的变量来让他编译的(反正就是5个字节)


但是问题来了,我发现编译之后所有的函数地址都是一样的。



然后我改了其中一个函数的内容,那个函数的地址不一样了。那说明是编译生成的时候被优化掉了。

但是我关了所有的优化之后,还是一样的。

我想问问怎么解决,最好是能避免关闭全局优化。
谢谢各位大佬了。
















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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 2473
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
nake去掉 (不要问为什么/手动滑稽)
2018-7-20 00:21
0
雪    币: 8213
活跃值: (3903)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
把 JMP 改成
       __asm{
               __emit 0xe9;
               __emit 0x02;
               __emit 0x03;
               __emit 0x04;
               __emit 0x05;
       }
0x02 - 0x05 每个函数请使用不同的数字, 以免编译出相同的结果被优化掉

感觉太长, 可以定义宏解决
#define mycode(x)                \
       __asm __emit (0xe9)        \
       __asm __emit (x+2)        \
       __asm __emit (x+3)        \
       __asm __emit (x+4)        \
       __asm __emit (x+5)

mycode(0x10);

最后...(不要问0xe9是什么/自动滑稽)
2018-7-20 09:04
0
雪    币: 38
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
chken 把 JMP 改成 __asm{ __emit 0xe9; __emit 0x02; __emit 0x03; __emit 0x04; __emit 0x05; ...
好吧,我最后是写的 push 0xFFFF00  0xFFFF01 ...这样的,都是5个字节,效果一样的     辛苦大佬了
2018-7-20 15:43
0
雪    币: 38
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
PYGame nake去掉 (不要问为什么/手动滑稽)
nake跟这个没关系,去掉也一样的
2018-7-20 15:44
0
雪    币: 2473
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
SimyKes 好吧,我最后是写的 push 0xFFFF00 0xFFFF01 ...这样的,都是5个字节,效果一样的 辛苦大佬了
这样子还不如直接 optimize ?  
2018-7-20 19:28
0
雪    币: 689
活跃值: (422)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
7
SIZE_T JMP_TARGET[FUNCTION_COUNT];
asm jmp JMP_TARGET[0]
asm jmp JMP_TARGET[1]
...
因为你的jmp 后边都跟的是JMPDIR,跳转目标都是一样的啊(都跳到JMPDIR了),导出表当然都是一样啊
2018-7-21 14:55
0
游客
登录 | 注册 方可回帖
返回
//