[問題] 請問可否指定fun在memory起始位置??

看板C_and_CPP作者 (ckvir)時間14年前 (2011/11/01 00:19), 編輯推噓1(1022)
留言23則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux C 問題(Question): 請問一下 在C中 可不可以自訂function的記憶體起始位置?? 目前我是想把functione固定在一個記憶體區塊 比如說 fun1 放在 0x0065FDF6 fun2 放在 0x00788AB2 這樣可行嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.40.229

11/01 00:23, , 1F
那是os在做的吧?
11/01 00:23, 1F

11/01 00:27, , 2F
我記得 linker script 似乎有這樣的選項 (不確定)
11/01 00:27, 2F

11/01 00:27, , 3F
所以不能在程式階段指定嗎??
11/01 00:27, 3F

11/01 00:30, , 4F
程式內應該有難度吧,頂多是在編譯與連結的時候指定
11/01 00:30, 4F

11/01 00:30, , 5F
畢竟決定載入到哪的並不是程式本身
11/01 00:30, 5F

11/01 00:32, , 6F
查一下 linux 有沒有類似 WriteProcessMemory 的東西.
11/01 00:32, 6F

11/01 00:33, , 7F
M$ keyword : PIMAGE_IMPORT_DESCRIPTOR , good luck.
11/01 00:33, 7F

11/01 00:36, , 8F
補一下好了,目前大多是在 dll import 進來後,再重新以
11/01 00:36, 8F

11/01 00:36, , 9F
WriteProcessMemory 方式,重新定義 name / address.
11/01 00:36, 9F

11/01 00:37, , 10F
要一開始直接初始化到指定位址,應就不是在 RT 時才動作
11/01 00:37, 10F

11/01 00:40, , 11F
找到一份觀念不錯的code http://ppt.cc/whCJ for Win.
11/01 00:40, 11F

11/01 11:35, , 12F
如果L大和V大在的話,應該會對樓上的講法有些意見
11/01 11:35, 12F

11/01 11:36, , 13F
樓上的意見指的是?
11/01 11:36, 13F

11/01 11:39, , 14F
標準的c/c++無法做到指定memory位置.至少我也是這樣想
11/01 11:39, 14F

11/01 11:40, , 15F
gcc雖然也有動態lib觀念.但是也沒有函式可以指令(沒記)
11/01 11:40, 15F

11/01 11:40, , 16F
不過這篇文章的要求,本來就沒辦法由C/C++的標準做到了
11/01 11:40, 16F

11/01 11:45, , 17F
等等我發現原po會問一些很有趣的問題
11/01 11:45, 17F

11/01 12:17, , 18F
我比較好奇的是原po怎麼會有這種需求?
11/01 12:17, 18F

11/01 21:58, , 19F
oh,我發表有誤的話很歡迎不吝指正 ^^ , linux 下不知
11/01 21:58, 19F

11/01 21:58, , 20F
ptrace 有沒有用 .
11/01 21:58, 20F

11/01 22:00, , 21F
其實沒這個意思啦.只是也不是寫組語.一定要放心思在這邊
11/01 22:00, 21F

11/01 22:01, , 22F
應該是很累的事情. vc/gcc也創造很多非標準的東西
11/01 22:01, 22F

11/01 22:03, , 23F
標準都是浮雲
11/01 22:03, 23F
文章代碼(AID): #1EhigHPu (C_and_CPP)