[問題] 想請問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