這是棘手的,我想你可以做這樣......順便說一下,我已經下載了libmagic源,並看着它......
那裏面有一個功能在minifile.c
中調用magic_read_entries
(這是我從sourceforge下載,它從外部文件中讀取純香草源。
你可以追加magic
文件(這是在/ etc目錄中找到),以結束圖書館的代碼,就像這樣s cat magic >> libmagic.a
。在我的系統中,magic
是474443字節,libmagic.a
是38588字節。
在magic.c
文件,你就需要改變magichandle_t* magic_init(unsigned flags)
功能,在函數的末尾添加行magic_read_entries
和修改功能本身在圖書館本身的數據拉的偏移讀取,對待它作爲指向char的指針(char **)並使用它而不是從文件中讀取。既然你知道圖書館數據的偏移量在哪裏讀取,那應該不難。
現在函數magic_read_entries
將不再使用,因爲它不會再從文件中讀取。函數`magichandle_t * magic_init(無符號標誌)'將負責加載條目,你應該在那裏確定。
如果您需要進一步的幫助,讓我知道,
編輯: 我從sourceforge.net使用舊的「libmagic」這裏是我做過什麼:
- 提取下載的檔案到我的主目錄中,unzip/untarring檔案將創建一個名爲的文件夾libmagic。
- 創建libmagic內的文件夾,並把它測試
- 複製原magic.c和minifile.c到測試
- 使用封閉diff的輸出凸顯差異,其應用到magic.c來源。
48a49,51
> #define MAGIC_DATA_OFFSET 0x971C
> #define MAGIC_STAT_LIB_NAME "libmagic.a"
>
125a129,130
> /* magic_read_entries is obsolete... */
> magic_read_entries(mh, MAGIC_STAT_LIB_NAME);
251c256,262
<
---
>
> if (!fseek(fp, MAGIC_DATA_OFFSET, SEEK_SET)){
> if (ftell(fp) != MAGIC_DATA_OFFSET) return 0;
> }else{
> return 0;
> }
>
- 然後發出使
- 魔術文件(我從/ etc複製,下Linux嵌入12.2)被級聯到libmagic.a文件,即
cat magic >> libmagic.a
。 SHA的校驗和爲魔法(4abf536f2ada050ce945fbba796564342d6c9a61魔術), 這裏是魔術的確切數據 (-rw-r - r - 1 root root 474443 2007-06-03 00:52/etc/file/magic)在我的系統上。
- 這裏是爲minifile.c源的差異,通過運行使再次提出申請,並重建minifile可執行文件。
40c40
< magic_read_entries(mh,"magic");
---
> /*magic_read_entries(mh,"magic");*/
它應該工作即可。如果不是,則需要通過修改MAGIC_DATA_OFFSET來調整庫中的偏移量以便讀取。如果你願意,我可以將魔術數據文件粘貼到pastebin中。讓我知道。
希望這會有所幫助, 最好的問候, 湯姆。
我還想過使用/修改libmagic的源代碼,所以我也發現了sourceforge版本,但是我懷疑它們與ubuntu repo中的libmagic-dev不一樣。如果您使用'man libmagic'或檢查http://linux.die.net/include/magic.h,則時間戳是2003.SF中的一個是2000(http://sourceforge.net/projects/libmagic/files /)。否則,我想這將是一個很好的解決方案,我可以開始研究如何實現它。 – Kache 2010-01-23 23:36:23
它看起來不像來自更新的libmagic 5.03的'magic'條目與舊的libmagic alpha兼容。看起來像libmagic 5.03包含在5.03文件中(來自'man file',ftp.astron.com/pub/file/file-5.04.tar.gz),所以我會試着去解決這個問題。我想我可能會陷入困境試圖做附加&指針抵消的事情,如果我到了那一點。 – Kache 2010-01-24 02:19:44
無論哪種方式,如果您需要我的幫助,請不要猶豫,通過回覆問! ;) – t0mm13b 2010-01-24 02:29:30