这是一种骗局,我相信你能够这样做......我已经下载了神灵的消息来源,并看着它......。
在minifile.c
内有以下功能:magic_read_entries/code>。 (这是我从sourceforge 下载的纯范式资料来源。) 从外部档案读取。
您可以将<条码>魔法条码>文档(载于/etc名录)贴到图书馆法典的末尾,如<条码>散射魔法”;>libmagic.a。 在我的系统中,magic
为474443 bytes,libmagic.a
为38588 bytes。
在magic.c
文档中,您需要在功能结束时修改magichandle_t* magic_init(未签名国旗)
功能,在功能结束时添加“条码”栏目:即已读-entries,并将功能本身改为由图书馆自己在数据中抽取,将其视作指向点(char **)的指使器,并使用从档案中读取。 由于你知道图书馆数据可读之处,这不应是困难的。
现在这一功能将不再使用<条码>魔法_read_entries,因为它不会再从档案中读过。 “魔法-t* magic_init(未签名的旗帜)”这一功能将谨慎装载这些条目,你应当在那里 。
如果需要进一步帮助,让我知道,
Edit:
I have used the old libmagic from sourceforge.net and here is what I did:
- Extracted the downloaded archive into my home directory, ungzipping/untarring the archive will create a folder called libmagic.
- Create a folder within libmagic and call it Test
- Copy the original magic.c and minifile.c into Test
- Using the enclosed diff output highlighting the difference, apply it onto the magic.c source.
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;
> }
>
- Then issue make
- The magic file (which I copied from /etc, under Slackware Linux 12.2) is concatenated to the libmagic.a file, i.e.
cat magic >> libmagic.a
. The SHA checksum for magic is (4abf536f2ada050ce945fbba796564342d6c9a61 magic),
here s the exact data for magic
(-rw-r--r-- 1 root root 474443 2007-06-03 00:52 /etc/file/magic) as found on my system.
- Here s the diff for the minifile.c source, apply it and rebuild minifile executable by running make again.
40c40
< magic_read_entries(mh,"magic");
---
> /*magic_read_entries(mh,"magic");*/
届时它应当工作。 否则,你将需要调整冲抵图书馆,以便阅读,修改MAGIC_DATA_OFFSET。 如果你愿意,我可以把魔法数据文档上 stick。 让我知道。
Hope this helps,
Best regards,
Tom.