[問題] 可以取得執行檔內某函式的回傳值嗎

看板C_and_CPP作者 (nola)時間11年前 (2012/12/19 11:48), 編輯推噓6(6011)
留言17則, 7人參與, 最新討論串1/1
假設某一執行檔為 test.exe 其內呼叫 bool func1() 在另一個程式 other 裡面執行 test.exe 後 other 可以獲得 func1() 的回傳值嗎? 麻煩大家了, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.188.59 ※ 編輯: nola3388 來自: 59.120.188.59 (12/19 11:48)

12/19 13:03, , 1F
我能想到最簡單的方法就是寫檔案..
12/19 13:03, 1F

12/19 13:10, , 2F
file, shared memory, message...etc
12/19 13:10, 2F

12/19 13:14, , 3F
也可利用 GetExitCodeProcess
12/19 13:14, 3F

12/19 13:56, , 4F
用 ReadFile + VirtualProtect 再把 Address 填一下,頗容
12/19 13:56, 4F

12/19 13:57, , 5F
易達成你想要的事情,如果你指得執行是 CreateProcess,那
12/19 13:57, 5F

12/19 13:58, , 6F
請查一下 InterProcess Communication
12/19 13:58, 6F
謝謝各位, 目前就是利用寫檔案的方式, 但想知道能不能用其它的方法 GetExitCodeProcess 不是只能獲得執行檔結束的回傳值嗎? 想得到的是執行檔呼叫函式的回傳值, 而不是執行檔的回傳值 我會查一下 interprocess communication 這個部分 再次感謝各位, 謝謝! ※ 編輯: nola3388 來自: 59.120.188.59 (12/19 14:40)

12/19 16:50, , 7F
http://tinyurl.com/83syz9v 跑過他範例code就會了
12/19 16:50, 7F

12/19 16:51, , 8F
用createfilemapping或named pipe吧
12/19 16:51, 8F

12/19 17:15, , 9F
也可以考慮用 WriteProcessMemory 寫回來也還滿方便的
12/19 17:15, 9F

12/19 21:00, , 10F
逆向思考全壘打!Compile 的時候用 debug mode
12/19 21:00, 10F

12/19 21:00, , 11F
然後呼叫 debugger 來執行你的程式!
12/19 21:00, 11F

12/19 21:15, , 12F
跳tone想問,WriteProcessMemory,前提是取得之addr要一樣??
12/19 21:15, 12F
謝謝 QQ29 你提供的這篇文章, 我之前也有看過 littleshan 你應該不是認真的吧 謝謝 meconin 的意見 我會找個時間, 整理一下大家提供的想法 ※ 編輯: nola3388 來自: 59.120.188.59 (12/20 10:48)

12/20 11:25, , 13F
littleshan 說的可行, 我就知道用 python 可做
12/20 11:25, 13F

12/20 15:26, , 14F
我很認真,用IPC你必需修改原始碼,用debugger只要重編
12/20 15:26, 14F

12/20 15:27, , 15F
因為你要做的事就和debugger要做的事一樣
12/20 15:27, 15F

12/20 15:27, , 16F
但自製debugger太麻煩,不如把已有的debugger拿來利用
12/20 15:27, 16F

12/20 19:33, , 17F
@@ 我想我被納為不會用 debugger 一員了,還在試 vs 怎搞
12/20 19:33, 17F
這讓我更疑惑了 1. 拿這個 debugger 來做的話, 可以正常對外發佈嗎? 2. 其它的我還可以想到怎麼做, 反過來利用 debugger 的話完全不知從何下手? 大大願意分享一下嗎? 謝謝 ※ 編輯: nola3388 來自: 59.120.188.59 (12/24 15:02)
文章代碼(AID): #1GqJa96J (C_and_CPP)