病毒分析教程第八話--idapython使用

IDAPython是IDA的一款強大的插件,通過它可以對病毒代碼做一些自動化的操作,常用於彙編碼反混淆和解密。接下來我們嘗試使用該工具來解密病毒代碼。

本次實驗的樣本爲:F834F898969CD65DA702F4B4E3D83DD0,下載地址:https://app.any.run/tasks/c7c12977-fdd1-4b1a-b8de-1c8f2806cdfc。先使用IDA打開它,目光聚焦到上面的導航欄,有一大段綠色的數據,位於0x40C030,直覺告訴我,這是段加密後的可執行文件。
1

在unk_40C030處按下Ctrl+X,即可交叉引用到代碼處,發現它是函數sub_404520的一個參數,通過代碼我們大致可以猜出,sub_404520的作用主要是解密出一個dll,然後LoadLibraryA調用它,下面就來主要分析這個解密函數sub_404520。
2
解密的核心邏輯就是紅框裏這個循環,主要工作是讀取數據裏的每一字節,然後進行減操作,可以說是很簡單的加密方式了。同時我們可以注意到一個有趣的地方,在位置0x2F0和0x2FF之間,病毒是產生隨機字節,這樣做的目的是免殺,使每次生成的dll的哈希不一樣。
3
解密循環中用到了a4的值,這個變量是作爲參數傳進來的。
4

回到解密函數sub_404520調用的地方,我們發現第4個參數就是’r’。
5

OK,分析完後我們就可以寫出解密代碼了。點擊File->Script command即可調出python調試板,首先使用GetManyBytes函數獲取初始地址爲0x40c030的0x11000大小的字節,然後依次做減法運算,最後將運算後的字節碼寫入新文件。
6

解密後的文件我保存爲dump,使用DIE看果然是個dll文件,成功解密。
7

爲了方便調用,我們可以將上述腳本保存爲decrypt.py,然後將解密代碼封裝到decrypt_data函數中,後續使用時調用decrypt_data函數就行。
8

然後我們使用交叉引用查看還有哪些地方調用了這個解密函數。很好,在WinMain+2949處還有個加密,看來這個病毒會解密生成兩個文件,我們下面就用腳本直接加密unk_41D038。
9

點擊File->Script file,選中decrypt.py即可成功加載。
10

然後在命令行輸入decrypt_data(0x41D038, 0x50000, ’d:\Temp\dump2’),即可成功解密文件。
11

解密出來的文件是個exe。
12

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章