剛剛開始用IceExt,覺得很好用!
IceExt有個!dumpscreen功能,使得不用跑到softice外面執行loader來儲存螢幕資訊,反彙編程式碼等等,很方便!有點象TRW2000下的反彙編輸出到檔案的命令。
但是IceExt儲存的是RAW格式,雖然有個siwrender工具將其變成BMP格式,但是不能複製貼上字串,有時候還是不太方便。
我看了一下IceExt儲存的RAW格式檔案,還好格式比較簡單,前一個位元組儲存字元資訊,後一個位元組儲存顏色資訊。
於是做了這個小程式,把顏色資訊都扔掉了,只留下了字元,在dos視窗下執行,顯示儲存的螢幕資訊,也可以重定向到檔案。
使用方法:
raw2t 原始檔 [寬度 高度]
寬度和高度可以在softice視窗中用 width 和 hight 命令來檢視。預設情況下分別是80和55(我的softice配置)。源程式一併給出,你也可以自己修改。
程式沒有做太多的糾錯功能,畢竟我們是學習crack的人,不是傻瓜使用者。
源程式 raw2t.c
01 #include <stdio.h>
02 #include <stdlib.h>
03 #include <memory.h>
04
05
06 int main(int argc, char* argv[])
07 {
08 int width = 80, hight = 55;
09 int i, j;
10 char *strLine;
11 FILE *fs;
12
13 if( argc < 2 ) {
14 printf("Convert IceExt raw files to text. Version 0.1 Made by kunlong.");
15 printf("\r\nUsege: %s raw_filename [width hight]", argv[0]);
16 printf("\r\nor : %s raw_filename [width hight] > destination_filename", argv[0]);
17 printf("\r\nDefault width:80\r\nDefault hight:55\r\n");
18
19 return 0;
20 }
21
22 if( argc == 4 ) {
23 width = atoi( argv[2] );
24 hight = atoi( argv[3] );
25 }
26
27 strLine = malloc( width+1 );
28 memset(strLine, 0, width+1);
29
30 fs = fopen( argv[1], "r" );
31 if( fs == NULL ) {
32 perror( "open failed on input file" );
33
34 return 1;
35 }
36
37 fseek(fs, 0, SEEK_SET);
38
39 for( i = 0; i < hight; i++ ) {
40 for( j = 0; j < width; j++ ) {
41 strLine[j] = fgetc(fs);
42 fseek(fs, 1, SEEK_CUR);
43 }
44 puts(strLine);
45 }
46
47 free(strLine);
48 fclose( fs );
49
50 return 0;
51 }
52
順便試了一下老羅的工具,不錯呀!嘿嘿。