目前似乎沒看到Wise安裝指令碼的反編譯器,破解Wise install serial比InstallShield的難度感覺要大些。
wise install serial一般也可以分為三類:
1、Wise install password
Wise password比較簡單,只是將password的ASCII碼求反了一下,用bpx GetWindowTextA然後再BPM一般可以找到求反後比較的地方。
2、透過Wise install script判斷serial
這種難度最大,因為動態跟蹤的話都是在指令碼直譯器裡面打轉,運氣不好可能搞不定,但也有跡可循。既然wise script檢查sn要用到字串操作和整數操作,就可以從這裡入手。
對於字串操作,可選擇的斷點有bpx lstrcpyA do "d *(esp+8)"然後BPM、CompareStringA(lstrcmp系列函式最終都是呼叫CompareStringA的);對於整數操作來說,切入點可以選擇bpx _atol do "d *(esp+4)"作為斷點,atoi/atol哪裡去找呢?Wise installer會在臨時目錄下解壓出一些GLxxx.tmp檔案,這些檔案中有一個150K左右的是Wise自己的runtime DLL,用IDA的sig功能在裡面可以識別出_atoi/_atol函式。
3、透過呼叫外部DLL來檢查sn
這種和InstallShield一樣,用bpx LoadlibraryA do "d *(esp+4)")、bpx GetProcAddress do "d *(esp+8)"。不過要注意的是,名字象"f6"、"f19"這樣的函式可能是Wise自己的支撐函式,但檢查sn的函式名可能也類似。
Wise installer可能會每次在你按下Next或OK按鈕後都載入臨時目錄下解壓出的GLxxx.tmp檔案(實際上是DLL檔案),這樣softice的斷點可能無法保持,每次需要重設。