[问题] 想请问dll动态库的建立

楼主: hpyhacking (骇人听闻)   2017-05-19 19:46:44
开发平台(Platform): (Ex: Win10, Linux, ...)
C语言
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Gcc
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
N
问题(Question):
最近想利用指标写dll修改程式
目标是想要主程式进行到一半进行数值修改
步骤:
1.编译dll档案,指令:gcc -shared -o change.dll change.c
#include <stdio.h>
#include <stdlib.h>
_declspec(dllexport) void change()
{
int *p = (int *)0x28ff2c;
*p = 500;
}
2.连结以及编译主程式,指令:gcc -o target.exe target.c -L. -lchange
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int num = 0;
printf("%x\n", &num);
while(1)
{
num++;
printf("\n%d", num);
Sleep(6000);
}
return 0;
}
最后我的num并没有被修改,请问是为什么呢@@
作者: littleshan (我要加入剑道社!)   2017-05-19 23:10:00
google mingw dll
楼主: hpyhacking (骇人听闻)   2017-05-19 23:23:00
我发现我误会了……
作者: littleshan (我要加入剑道社!)   2017-05-19 23:40:00
看你是要 dynamic linking 还是 dynamic loading编出 DLL 的时候一定会同时产生 imp library (XXX.a)在编 exe 时一起 link,就会是 dynamic linkingdynamic loading 则是用 LoadLibrary 执行时才加载这些都和 IDE 没什么关系啦,IDE 只是帮你把指令填好
楼主: hpyhacking (骇人听闻)   2017-05-20 00:09:00
我没有产生那个.a档诶…难怪失败另外我找到有dll注入工具?那是再了解dll另外写的程式对不对?那个也是dynamic loading囉?然后不知道为什么我的电脑开机后每次执行exe他的位址都会一样,所以程式码中的位址就直接给了
作者: vaio8937 (直把杭州当汴州)   2017-05-20 01:00:00
请问你要LoadLibrary,让主程式呼叫DLL的函式。还是你要DLLInjection两个做法完全不一样你是想要DLL附在主程式上,去hack主程式的变量吗?
楼主: hpyhacking (骇人听闻)   2017-05-20 01:34:00
Dllinjection!!!!我要的是dll injection
作者: vaio8937 (直把杭州当汴州)   2017-05-20 01:40:00
那我再另回一篇文
楼主: hpyhacking (骇人听闻)   2017-05-20 01:58:00
感谢妳,我也还在爬文章看观念
作者: TobyH4cker (Toby (我要当好人))   2017-05-20 02:08:00
因为change()并没有被呼叫过啊
楼主: hpyhacking (骇人听闻)   2017-05-20 10:30:00
我也在想怎么呼叫rrr
作者: TobyH4cker (Toby (我要当好人))   2017-05-20 18:35:00
在你的主程式宣告dllimport 然后自己呼叫
楼主: hpyhacking (骇人听闻)   2017-05-20 19:01:00
那请问一般其他的程式并没有办法有原始码,还是要做这哥动作怎么办

Links booklink

Contact Us: admin [ a t ] ucptt.com