如何製作vc6靜態連結庫的IDA SIG檔案
網上有製作vc靜態連結庫的IDA SIG檔案的文章,但是他針對的是VC7, 並且給出的指令碼有一點小問題,我基於他的基礎做了部分修改:
1. 把vc6下的libc.lib 拷貝到flair61\bin路徑下,這樣執行prf,sigmake就不用再指定長長的路徑
2.嘗試用plb製作pat 檔案是不成功的,它會返回錯誤資訊:
基本思路是從libc.lib 匯出obj檔案,用prf製作pat,再用sigmake 製作sig檔案;
3. 建立一目錄儲存libc.lib匯出嘚obj檔案,假設為libcobj;放在bin 目錄下面,進入libobj目錄,建立一批處理檔案,內容為:
for /F "skip=3" %%i in ('link.exe -lib /list ..\libc.lib') do echo %%i && link.exe -lib /extract:%%i ..\libc.lib
命名為extract.bat,然後在command line 下執行它,這樣就會釋放出obj,並放入該資料夾中;
4.然後建立另一批處理檔案dopcf.bat,檔案內容如下:
for %%i in (*.obj) do ..\pcf.exe -g0 %%i
提示: 由.obj檔案生成.pat檔案。為了避免pcf.exe在執行的過程中處理非COFF檔案時中斷、出現提示資訊“is not ar/coff file\npress enter to exit”,加上引數"-g0"
在command line 下執行它,就會建立pat 檔案
4. 最後一步是製作sig 檔案,這時可以通過命令列執行:
sigmake -n"VC6 Static lib" *.pat vc6libc.sig
這是會產生衝突,不知道為何用sigmake.txt 文件裡提到的解決衝突的方法無效(就是在emc衝突函式的前面新增-,+)
我的辦法就是,先做一部分,如果有衝突就避掉一些pat檔案,直到沒衝突,避掉的就不要加進去了,然後在1批批的往裡面新增,如果有衝突就用剛剛的方法去做,然後再加下一批直到成功!