經常在網上下載的朋友,都會遇過一些擋案用自行解壓封包(self-executable file)的。例如:

book.exe

開這類檔案有一毎危險性,就是除是會給封包的人下毒或廣告程式,有時連防毒軟件都察覺不到。

所以,我在這兒提供一個把這個檔案轉換成非執行檔(non-executable file, .exe)方法給大家參考一下。

首先,在開一個叫 unsfx.c 的檔案,貼上以下內容:

#include <stdio.h>
int main()
{
unsigned char seq[7]={0x52,0x61,0x72,0x21,0x1a,0x07,0x00};
unsigned char c;
int seq_match=0,C;

while ((C=fgetc(stdin))>=0) {
c=C;
if (seq[seq_match]==c)
seq_match++;
else
seq_match=(seq[0]==c)?1:0;

if (seq_match==sizeof(seq)) {
fwrite(seq,1,sizeof(seq),stdout);
while ((C=fgetc(stdin))>=0)
fputc(C,stdout);
return 0;
}
}
return 1;
}

再把這個C程式compile成可執行檔(在這個例子我用Linux的gcc去做)

gcc unsfx.c -o unsfx

這樣你就做好了一個叫 unsfx 的程式。你用這個程式去把你的EXE檔變成RAR檔 (在 Linux 下執行):

unsfx < book.exe > book.rar

這樣你就成功地做把這個執行檔轉成RAR檔。你現在可以安全地用一般解RAR的軟件,例如視窗上的WinRAR去解這個檔案了。

如果在Linux下,你就可以:

unrar x book.rar

當然,有時轉換了出來不一定是RAR的形式。你可以先用file這個工具去檢查一下他的類型:

file book.rar
顯示出:book.rar: RAR archive data, v1d, os: Win32

以上可以看見轉換出來的真是一個RAR檔。

廣告