010破解(一)之暴力破解
010介紹
010是非常好用的16進制編輯工具
功能介紹:
- 16進制修改
- 文本修改
- 模板解析各種文件格式
- 對比文件
暴力破解分析
分析思路:
- 找到註冊窗口
- 測試註冊窗口反應(輸入錯誤的假序列號)
- 根據反應做出下一步分析的打算
- 猜測API,API下斷點動態調試
- 挑出敏感字符串,在程序中搜索
- 動態分析,定位關鍵跳轉,修改代碼
- 動態分析,定位關鍵CALL,修改代碼
這裏我用第二種方法,搜索字符串定位到函數位置
Ctrl+A
分析模塊,會發現跳轉來自00DD5A79,跟上去分析,OD下斷點調試後發現這裏只是做了判斷,上面的CALL並沒有調用,繼續往上跟,找關鍵代碼
這裏跟上面情況一樣,仍然是隻做了判斷,下斷點之後繼續往上跟
跟到這裏我們會發現兩個跳轉分別比較的是第一個兩個函數的返回值和一個標誌位(猜測),這裏應該是關鍵代碼了,接下來我們要分析一下這兩個函數的作用,理清直到字符串的一系列判斷跳轉邏輯
- EBX是第一個函數0040A826的返回值
- EDI是第二個函數00409C9B的返回值
先分析函數00409C9B:看返回值
函數有三個返回值:0xED 0x20C 0xDB
往上翻可以看到函數返回值是根據Switch-case跳轉過去的,仔細觀察我們可以發現,比較的EAX是另一個關鍵函數的返回值
回去在分析一下跳轉邏輯,只有第一個函數返回值是0x2D,第二個函數的返回值纔是0xDB,跳轉才能避過無效用戶名字符串,也就是說我們只要讓第一個函數一直返回0x2D就可以了
暴力破解開始
方法一:修改跳轉
在這裏修改跳轉:JNZ修改爲JZ就可以了
注意:這樣修改我們每次打開都得輸入序列號,當然隨便輸就可以了,不論輸什麼用戶名序列號都會顯示成功.
方法二:修改代碼
修改第一個函數代碼,修改返回值恆爲0x2D
注意:這裏有下劃線的地址是經過重定位的,我們需要去掉軟件的隨機基址功能,在改代碼保存才能正常使用.
修改後發現還是不能使用,經測試發現:
第二個函數驗證了標誌位,我猜可能是爲網絡驗證
到此保存修改,dump文件就可以了