[問題] 請問關於dll或是exe包含一些圖檔等資料

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間15年前 (2010/10/12 02:34), 編輯推噓3(3035)
留言38則, 5人參與, 最新討論串1/1
之前有需要寫個撲克牌小遊戲來練習 因為沒有圖片所以找了一些網頁抓圖 我印象中我有找到一個網頁 講說他圖片是從windows接龍擷取出來的 而我剛剛針對這去找 花了半小時找不到......之前找到的相關文章 找到了這http://www.ucware.com/apev/index.htm 似乎是有辦法從DLL或EXE擷取資料 可是他扯到了PE 這名詞我不曉得是什麼... http://en.wikipedia.org/wiki/Portable_Executable 似乎是windows的產物. 以下是我想問 以我所知 要讀一個dll動態的方式就是LoadLibrary(dll路徑) 可是這樣就 全load到記憶體了吧 如果這DLL 裡面包含圖片或是啥資訊 我該如何去讀出來呢? 同樣的如果是包在EXE...這樣EXE會變肥之外 讀到memory也會花更多時間吧? 這樣有甚麼優點..... 又該以什麼方法去讀回來 簡單來講 我該如何不用第一個連結的tool自己寫parser去擷取出dll或exe的圖檔嗎? 因為印象中很久以前使用BCB6時 TImage component可以在IDE選擇要讀哪個圖檔 可是那個圖檔在build出EXE後 就不需要它了 給別人EXE就有圖檔資訊... 他也是用這技術嗎? 每個exe檔案都有個icon 似乎也是用這技術記錄在exe裡面? 因為平常寫小程式按個F5 跑出EXE就不管它了.... 但現在想想 如果是我 我該如何把BMP或是其他資訊嵌入到exe或是dll呢... 以前dll都是包export method...沒想過export圖檔... 這樣是否也能初步的保護自己的圖資不被第一時間給user看到.... 相關資訊我實在不知用啥關鍵字google= = 可否請熟知這部分的板友提供一些想法 謝謝你 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.70.221

10/12 03:07, , 1F
你的問題一樣卡在記憶體管理的機制. 但是你很神奇,
10/12 03:07, 1F

10/12 03:07, , 2F
每次都問一點問一點, 不回去看課本又想很多
10/12 03:07, 2F

10/12 03:08, , 3F
PE 是 windows 上面 executable 的 format
10/12 03:08, 3F

10/12 03:09, , 4F
在目前 x86 的架構下, 利用 segment 來對記憶体作佈
10/12 03:09, 4F

10/12 03:10, , 5F
局是很恰當的. 連帶影響到 executable 的設計方式
10/12 03:10, 5F

10/12 03:10, , 6F
如果要藏圖, 一般會另外放其他的 segment, 而不是你
10/12 03:10, 6F

10/12 03:11, , 7F
所熟知的 .text, .data 這些 segment
10/12 03:11, 7F

10/12 03:11, , 8F
在 Linux 下可以用 objcopy 去辦到
10/12 03:11, 8F

10/12 03:12, , 9F
這個部份 jserv 有提到過 http://0rz.tw/dsWU3
10/12 03:12, 9F

10/12 03:13, , 10F
另外你在程式設計師的修養一書裡面也會提到
10/12 03:13, 10F

10/12 03:13, , 11F
至於你說的 parser, 你需要的是讀懂 PE/COFF format
10/12 03:13, 11F

10/12 03:14, , 12F
的架構, 換言之就是你必須用 hexedit 之類的東西去好
10/12 03:14, 12F

10/12 03:16, , 13F
好重新檢視你的 executable/object file
10/12 03:16, 13F

10/12 03:17, , 14F
這是 PE/COFF 的 spec: http://0rz.tw/L9UQK
10/12 03:17, 14F

10/12 03:18, , 15F
再來你提到的 LoadLibrary, 現在你常用的作業系統都
10/12 03:18, 15F

10/12 03:19, , 16F
該是用 page + MMU 的機制去管理, 是不是整個 load
10/12 03:19, 16F

10/12 03:19, , 17F
到記憶体我想是不見得
10/12 03:19, 17F

10/12 03:21, , 18F
最後你所說的優點, 我想優點就是像你這類的使用者就
10/12 03:21, 18F

10/12 03:22, , 19F
無法把圖萃取出來吧
10/12 03:22, 19F

10/12 09:04, , 20F
謝謝K大講解 慢慢理解~但確實基礎不好我也不知從何看起
10/12 09:04, 20F

10/12 09:06, , 21F
請問要會K大說的這些 那些基礎書籍有講呢? 恐龍本?
10/12 09:06, 21F

10/12 09:33, , 22F
如果放在資源區塊內,LoadIcon不是能讀出來嗎???
10/12 09:33, 22F

10/12 10:24, , 23F
king大很有心,回得很詳細
10/12 10:24, 23F

10/12 18:00, , 24F
原po大概得看IMAGE_RESOURCE_DIRECTORY,我對import、
10/12 18:00, 24F

10/12 18:01, , 25F
export table跟重定位比較熟悉
10/12 18:01, 25F

10/13 02:13, , 26F
恐龍書我只看到第七版, 在我看來只是玩具程度的教科
10/13 02:13, 26F

10/13 02:13, , 27F
書. 第八版我沒看不敢說
10/13 02:13, 27F

10/13 02:13, , 28F
原因是因為恐龍書闡述的其實跟現實生活中有很大的落
10/13 02:13, 28F

10/13 02:14, , 29F
差. 看完了你還是不知道現實世界實作的細節
10/13 02:14, 29F

10/13 02:15, , 30F
推薦你 William Stallings 的 Operating Systems:
10/13 02:15, 30F

10/13 02:16, , 31F
Internals and Design Principles. 這本書也是理論為
10/13 02:16, 31F

10/13 02:16, , 32F
主, 但他考慮到現實生活中的硬體. 並會對一些設計探
10/13 02:16, 32F

10/13 02:17, , 33F
究其原因
10/13 02:17, 33F

10/13 02:18, , 34F
另外一本是 Andrew S. Tanenbaum 的Operating System
10/13 02:18, 34F

10/13 02:18, , 35F
: Design and Implementation. 他本人實作了一個教學
10/13 02:18, 35F

10/13 02:19, , 36F
用的 os minix. 這本書就是在講他的設計與程式碼
10/13 02:19, 36F

10/13 02:19, , 37F
minix 的程式碼不多, 三萬行. 大概一兩個月可以看完
10/13 02:19, 37F

10/13 02:19, , 38F
看完你就知道整個 os 在幹嘛了
10/13 02:19, 38F
文章代碼(AID): #1CirYicf (C_and_CPP)
文章代碼(AID): #1CirYicf (C_and_CPP)