有一天,在機緣巧合之下我獲得了一個鎖機軟件(是多巧合阿喂!),然后興高采烈的把它拖入了虛擬機里蹂躪(>_<!)。
很巧,軟件有虛擬機檢測。。。
Emmmm好吧,隨便過一下。。。
我用的虛擬機是VMware12,網上查到了一段過檢測的代碼:
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
把上面兩行加到虛擬機配置文件結尾,保存然后重新打開虛擬機即可。
好了,這次程序直接運行了起來。
靠!連一點暗示都不給,直接重啟的嘛!這個人好壞好壞的,都不稍稍偽裝下!
幸虧做了快照備份。。趕緊還原虛擬機,下面就開始簡單分析一下這個程序的行為吧!
當然,少不了表姐的PeDoll~這時,表姐C/S的軟件架構就很好的解決了測試機重啟的問題~表白表姐~
好了,具體怎么抓的實在太簡單,這里我就不寫了,也就一個腳本的事,不耽誤大家時間了。我們只看最后。
從PeDoll里保存下來兩個512字節的數據文件,我斷定這一定是這個智障軟件寫入到MBR的內容(廢話嘛!)。其中一個很明顯是鎖機的,另一個可能是我虛擬機原始的MBR。看到這里謝天謝地。。至少這軟件知道把原來的數據保存下來,這樣就代表還原不是不可能拉!
在分析之前,我把虛擬機還原了一遍,又抓了一次數據。結果表明這丫兩次寫入的數據一模一樣!誒,都不加個隨機密碼之類的嗎!
好了,下面是這款軟件寫入到MBR的內容。
恩,這樣亂七八糟的是要我怎么看嘛!還好,我有nasm! 於是,我隨手從官網下載了nasm的二進制文件。就下面這貨。
其中我們只用到ndisasm.exe這個程序來反匯編我們的MBR文件。最后來讓我們看看結果~
嗯,,這回看着順眼多了。把結果保存到文件中,我們來仔細分析下吧。
00000000 E90000 jmp 0×3
00000003 8CC8 mov ax,cs
00000005 8ED8 mov ds,ax
00000007 8ED0 mov ss,ax
00000009 8EC0 mov es,ax
0000000B BC0001 mov sp,0×100
0000000E BDED7C mov bp,0x7ced ;;;提示字符串偏移
00000011 BBED7C mov bx,0x7ced
00000014 E8B000 call 0xc7 ;;;計算字符串長度
00000017 89C1 mov cx,ax ;;;cx=字符串長度
00000019 B80113 mov ax,0×1301
0000001C BB0C00 mov bx,0xc ;;;頁號0,黑底紅字
0000001F B200 mov dl,0×0
00000021 CD10 int 0×10 ;;;打印提示字符串
00000023 B800B8 mov ax,0xb800
00000026 05A000 add ax,0xa0
00000029 8ED8 mov ds,ax ;;; ds=0xb8a0
0000002B 31C9 xor cx,cx ;;;初始化cx
0000002D 31DB xor bx,bx ;;;初始化bx
0000002F 31C0 xor ax,ax ;;;初始化ax
00000031 CD16 int 0×16 ;;;等待輸入密碼
00000033 3C08 cmp al,0×8 ;;;退格
00000035 7413 jz 0x4a
00000037 3C0D cmp al,0xd ;;;回車
00000039 741B jz 0×56
0000003B B402 mov ah,0×2
0000003D 8807 mov [bx],al
0000003F 886701 mov [bx+0x1],ah
00000042 81C30200 add bx,0×2
00000046 41 inc cx
00000047 E9E5FF jmp 0x2f
0000004A 81EB0200 sub bx,0×2 ;;;退格鍵按下
0000004E 49 dec cx
0000004F 31C0 xor ax,ax
00000051 8907 mov [bx],ax
00000053 E9D9FF jmp 0x2f
00000056 8CC8 mov ax,cs ;;;回車鍵按下
00000058 8EC0 mov es,ax
0000005A 31DB xor bx,bx
0000005C BEDA7C mov si,0x7cda ;;;密碼字符串偏移
0000005F 2E8A0ED97C mov cl,[cs:0x7cd9]
00000064 B500 mov ch,0×0
以上參考了鏈接http://slab.qq.com/news/tech/1293.html,有興趣的可以自己去看看。
經分析,這個MBR文件跟上面鏈接中的應該是同一種,特征完全一致,我只是寫了一點注釋方便大家對照(順便學習一下匯編,嘿嘿嘿)。
最后得出密碼的十六進制是C6C6BDE2C4E3C2E8B1C6A8BAA8DEA4A2(嗯,我就不翻譯了),所以最后困擾我的就是這個密碼要怎么輸入?經研究發現有人說用ALT+小鍵盤數字來輸入,不過我沒有小鍵盤(求好心人贊助。。。),試了其他方法也沒有成功,這里希望能有大佬指教一下~
最后一個不算結束的結束吧。經(xiao)此(da)一(xiao)戰(nao)之后,我的功力又有了不小的提升。以后還是要多練練手才能不生疏阿。
此次用到的程序文件我全都打包放到了附件中(點擊原文下載),感興趣的小伙伴可以下載研究,歡迎交流~