ACProtect Professional 1.3C 主程序脫殼(1)(圖)
發(fā)布日期:2022-01-18 08:50 | 文章來源:CSDN
脫殼過程感覺與Unpacking Saga的那個UnpackMe沒有太大的不同。最明顯的一點是,其中的異常多了很多。大部分是固定模式的int 3解碼。因為一開始打算全程跟,所以一邊跟一邊修改去除junk code的IDC script,寫OllyScript腳本,并用WinHex把解出的代碼貼到ACProtect_Fixed.exe,在IDA中用Load File|Reload the input file加載后對照。
如果在OllyDbg110C下忽略所有異常,運行時報:
1. 關于int 3解碼
殼中有大量的int 3解碼,一邊執(zhí)行一邊解。具有相同的調用模式:
在int 3的SHE中(下面的div 0異常也是同一個SEH),當exception code為0x80000003時,在Dr0-Dr3中設置了新的值,即設置了4個硬件執(zhí)行斷點,就在緊臨int 3下面的位置。這樣執(zhí)行到這4句,會觸發(fā)4次異常。如果在這里F7過,SHE不會執(zhí)行。
當由上面的4個斷點引發(fā)異常時:
每次異常,會設置某個寄存器。4次異常處理必須執(zhí)行,否則寄存器中沒有正確值,下面的解碼會失敗。這樣又順便清除cracker的斷點,是個不錯的主意J。
結束異常處理后,開始解碼。格式是一樣的,用的register不同。這里可以得到起始地址(。
在jnz下面的地址F4,然后查看前面用于尋址的寄存器的值,減1就是解碼結束地址。
解完后跟著一個div 0異常。只有anti-debug作用,直接跳過即可。
2. 避開IAT加密
在第16個int 3的解碼過程中,隱藏了IAT加密。其實在OllyDbg的狀態(tài)欄可以看到這附近有不少dll被加載了。
有4處檢查,決定是否特殊處理。在用GetProcAddress得到API的地址后,開始檢查。是否為特殊的API?
如果在OllyDbg110C下忽略所有異常,運行時報:
1. 關于int 3解碼
殼中有大量的int 3解碼,一邊執(zhí)行一邊解。具有相同的調用模式:
在int 3的SHE中(下面的div 0異常也是同一個SEH),當exception code為0x80000003時,在Dr0-Dr3中設置了新的值,即設置了4個硬件執(zhí)行斷點,就在緊臨int 3下面的位置。這樣執(zhí)行到這4句,會觸發(fā)4次異常。如果在這里F7過,SHE不會執(zhí)行。
當由上面的4個斷點引發(fā)異常時:
每次異常,會設置某個寄存器。4次異常處理必須執(zhí)行,否則寄存器中沒有正確值,下面的解碼會失敗。這樣又順便清除cracker的斷點,是個不錯的主意J。
結束異常處理后,開始解碼。格式是一樣的,用的register不同。這里可以得到起始地址(。
在jnz下面的地址F4,然后查看前面用于尋址的寄存器的值,減1就是解碼結束地址。
解完后跟著一個div 0異常。只有anti-debug作用,直接跳過即可。
2. 避開IAT加密
在第16個int 3的解碼過程中,隱藏了IAT加密。其實在OllyDbg的狀態(tài)欄可以看到這附近有不少dll被加載了。
有4處檢查,決定是否特殊處理。在用GetProcAddress得到API的地址后,開始檢查。是否為特殊的API?
上一頁12 3 下一頁 閱讀全文
版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯(lián)網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
相關文章
上一篇:
關注官方微信