目前的成果
1.讓EHSvc.dll被脫殼後,也能通過hackshield系統的自效驗。
2.去掉反調試。
函式的作用
#1:初始化 return value: 0
#2:載入驅動 return value: 0
#10:初步的自效驗 return value: 0
#14:記憶體效驗.
臨時的解決方法
1.修改EHSvc.dll的#10函式讓其eax永遠返回0.
2.修改EHSvc.dll的#2函式讓其不載入驅動,並且eax返回0
#1函式的流程分析
9個參數
0.屬於Freestyle模組的函式的地址,估計是freestyle提供的回調函式。
1.驗證主程式freestyle.exe檔案名稱的key=3ECh.(發現只要檔案名稱前面為freestyle就可以通過)
2.主程式檔案名稱Hash後的散列.用PEID算法的識別外掛程式顯示使用的hash函式為HAVAL-128
3.DWORD標誌欄位,每一位都有含義.目前意義不祥
4.註冊表中packver的鍵值,本機為3032601h
5.一個標誌欄位.freestyle.exe傳過來的值為2.和驅動載入有關,具體用途不明.這個值要影響一系列的標誌位.
6. Hackshield Ehsvc.dll的檔案名稱(帶路徑)
7.GetTickCount的地址
8.GetSystemTime的地址
大概的流程
首先在註冊表HKCU下創建Software\\AhnLab\\HShield項.如過存在就打開.
將Ehsvc.dll的路徑信息寫入默認的鍵值,將3032601h鍵值寫入 packver
然後查詢log鍵的值,但是我的註冊表裡面沒有這個鍵.(奇怪的地方),這個log鍵關係到一個全局變數的值.
接下來:
用參數3當作標誌
第9位是否置10
如果是則設定一系列全局變數----這裡必為1
根據全局變數,判斷#1是否已經成功的調用過.
判斷是否傳入了回調函式的地址
判斷是否傳入了主程式檔案名稱的Hash值
如果通過
1.檢查當前運行主程式的檔案名稱是否和原始的一樣
用參數3當作標誌
第15位是否置1
如果是則設定一系列全局變數----這裡必為0
不為0,將要啟動一個新的執行緒,作用不明.
用參數3當作標誌
第10位是否置1
如果是則設定一系列全局變數----這裡必為0
不為0也要執行一些不明作用的操作.
判斷作業系統,如果是2000以上,作業系統版本全局變數=1