如何不调用系统目录下的api来实现功能?

[复制链接]
查看11 | 回复8 | 2021-1-27 06:17:32 | 显示全部楼层 |阅读模式
如何不调用系统目录下的api来实现功能?
可不可以把system32下的user32.dllgdi32.dll等等....复制再重命名为myuser32.dllmygdi32.dll
然后写程序时不调用原来的user32.dll而调用复制过来的myuser32.dll这样使用api时就不会被别的程序
发现并hook掉了?
我是痴人说梦,不知有没有高手指教?
若有回答:感激不尽!感激不尽啊!

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
请求回答!谢谢
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
不行吧系统目录下的这几个dll在系统启动时已被加载到系统固定内存区域随OS运行而被调度你这种方式偶觉得行不通
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
引用楼主goalue的回复:如何不调用系统目录下的api来实现功能?
可不可以把system32下的user32.dllgdi32.dll等等....复制再重命名为myuser32.dllmygdi32.dll
然后写程序时不调用原来的user32.dll而调用复制过来的myuser32.dll这样使用api时就不会被别的程序
发现并hook掉了?
我是痴人说梦,不知有没有高手指教?
若有回答:感激不尽……

可是是可以的。
但是你的系统重启后就废了
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
这样说吧,重启前,起不到Hook的效果,重启后,系统也作废了
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
痴人啊。。。。。。
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
嗯,或许你把你用到的每一个API,都通过LoadLibrary(使用全路径)+GetProcAddress的方式调用,这样你就能控制强制调用你自己目录下的那个DLL了。不过,API内部再调用其它API,就不是你能控制得了的了。
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
可以的。具体办法是:

kernel32.dll->myKernel32.dll
user32.dll->myUser32.dll
仔细修改windows.incuser32.inckernel32.inc几个文件,使命名规则与你自己命名myKernel32.inc,myUser32.inc的规则一致。
使用inc2lib产生myKernel32.lib,myUser32.lib.
链接的时候忽略系统库,指定新库myXXX.lib。
程序发布的时候将相应的dll一起发布。
----我以前做汇编的时候这样做过,非常麻烦,而且不具有移植性(xp,vista,win7之间没有移植性。)
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
引用4楼tr0j4n的回复:这样说吧,重启前,起不到Hook的效果,重启后,系统也作废了

ding!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行