惡意程式碼分析實戰Lab1602
阿新 • • 發佈:2019-01-28
感覺這個程式原來分析過一次,很相似
目的是得到一個長度為4的pw
IDA中邏輯非常清晰,在CreateThread中對資料byte_408030進行修改
然後v5作為判斷標誌
在這兒下斷看資料就好~
(然後用OD下斷看不到,結合本章知識點猜想是有反偵錯程式的手段)
在函式TlsCallBack裡發現了這個:
在字串裡找到了這個:如果改下字串的話,是不是可能就繞過了偵錯程式z
在winhex裡修改下儲存
FindWindow:該函式獲得一個頂層窗體的控制代碼,該窗體的類名和窗體名與給定的字串相匹配
在OD中除錯發現了最重要的問題:
main中是根本沒有進去的~直接進去的是TlsCallback
所以,需要百度一下TlsCallback反除錯的原理以及繞過方式
根據這篇文章的繞過TLS的兩種思路,分別進行實驗:
方法1:OD將TLS強制jmp到main中
方法2:在IDA中檢視TLS區段大小,將其全部nop掉
這兩個方法確實可以去除TLS
但是,F4執行到401233還是有問題
所以,猜測在CreateThread之中仍有其他檢測
可見,bl是與當前程式執行環境有關的值,將其patch成mov bl,0即可,執行到已終止
所以,4位密碼就是byrr
總結一下,這個程式有三個反除錯:
(1)TLS
(2)FindWindow中對OLLYDBG的判斷
(3)手動實現了fs:[30h]的IsDebugPresent的判斷