本章我們将學習特征碼的提取與定位,特征碼是軟體中一段固定的具有标志性的代碼片段,特征碼的用途非常廣泛,最常見的就是防毒軟體的清除了,清除就是根據特征碼定位技術實作的,再比如木馬的免殺也是修改了特征碼的一些特征片段而躲避清除的啦。
本章的内容對于軟體破解非常的有用,比如你需要破解一個程式,但你無法定位到關鍵按鈕的事件中去,此時你可以先檢視待破解程式使用了那種程式設計語言來寫的,然後自己用對應的程式設計語言編寫一個簡單的小程式,并放入容易搜尋到的字串,然後提取針對特定語言特定版本的通殺特征,最後應用到需要破解的程式中去。
------------------------------------------------------------
本章難度:★☆☆☆☆☆☆☆☆☆
本章課件:https://pan.baidu.com/s/1-jb0RphkXY8w45yOjJWk_A 提取碼: nb3q
------------------------------------------------------------
VB語言: 81 6C 24
易語言: FF 55 FC 5F 5E或(e-debug)
萬能斷點: F3 A5 8B C8 83 E1 03 F3 A4 E8
Delphi: 74 0E 8B D3 8B 83 ?? ?? ?? ?? FF 93 ?? ?? ?? ??
MFC: sub eax,0a
VC++6.0: sub eax,0a
藍屏防禦特征碼: 55 8B EC 81 EC 14 00 00 00 68 0C 00 00 00
藍屏保護特征碼: 55 8B EC BB 06 00 00 00
飄零金盾1.5 : 55 8B EC BB 06 00 00 00
飄零金盾2.0 : 55 8B EC EB 10 56 4D 50 72 6F 74 65 63 74 20 62 65 67 69 6E 00 BB 06 00 00 00
飄零通用 : 0F 84 ?? ?? ?? ?? E8 ?? ?? ?? ?? EB ??
1.先來看一下這個CM例子,當我們點選按鈕1的時候,會提示一個MessageBox資訊框,而點選按鈕2則程式沒有反映,我們現在要做的就是通過按鈕1提取到按鈕事件的特征碼,然後下斷點并定位到按鈕2的按鈕事件中。

2.打開OD直接将這個CM拖入OD中,預設會停在程式的OEP位置,這次我們不用字元串來找了換個思路,我們下一個MessageBox彈窗斷點,直接選擇【設定API斷點】,選擇消息框,然後選擇MessageBoxA就可以了。
3.接着我們按下【F9】讓程式跑起來,然後點選CM程式中的【彈出視窗】按鈕,發現OD斷在了系統領空,系統領空的東西是不能改的,我們直接出這個CALL。
4.通過單步【F8】出CALL後,看到以下代碼,并沒有段首,我們繼續F8出這個call.
5.再次出CALL ,并沒有首的符号,這裡還在函數的内部,我們繼續單步到【retn】出這個call.
6.最後看到了。
7.直接斷首下一個【F2】斷點,然後運作程式,再次點選彈窗按鈕,OD再一次斷下了。
8.這隻是一個獨立的彈窗過程并不是按鈕的按鈕事件,按鈕事件一定是調用了這個過程,是以我們需要找到是誰執行了這裡的代碼。
由于,調用call指令會将目前指令的下一條指令的位址壓入棧存儲,是以我們就直接觀察堆棧中的參數就能夠定位到按鈕事件的上一層代碼的位置了。
9.OD直接搜尋這個位址,看一下是不是有call 調用了他。
10.果然,我們果斷在這裡下一個【F2】斷點,然後直接【F9】運作程式。
11.點選【測試定位效果】按鈕,程式會被斷下,這更能确定,這就是按鈕的調用源頭。最後提取這段通殺特征【FF 55 FC 5F 5E】。
12.直接按下【F7】,進入按鈕二的核心代碼處。
13.如果要使用特征碼定位的話,可以在OD反彙編視窗按下【ctrl + B】,直接搜尋即可。
總結:學會了這一個小技能,對于軟體的破解大有幫助,雖然簡單,但很實用
寫教程不容易,轉載請加出處,您添加出處,是我創作的動力!
轉載于:https://www.cnblogs.com/LyShark/p/11137442.html