1. 程式人生 > >惡意程式碼分析實戰Lab1602

惡意程式碼分析實戰Lab1602

感覺這個程式原來分析過一次,很相似

目的是得到一個長度為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的判斷