x64dbg - 第十六章 | 反匯編練習(五)
目標程式
檔案下載:pixtopianbook107.exe
解壓密碼:morosedog
程式簡介
PixtopianBook是面向各行各業用戶的理想個人訊息管理器(PIM)。它具有內置的電子郵件功能,便捷的電話撥號器,以及強大的生產力功能。它完全可定制,以滿足你的個人喜好和獨特的個性。PixtopianBook的設計具有友好的用戶界面和基本功能,是必須更快,更輕鬆地完成工作的工具!完整功能列表
- 用戶友好界面
- 配置文件管理
- 一鍵式撥號和一鍵式電子郵件電子郵件到所有組
- 密碼保護
- 生日提醒
- 電話撥號器
- 重撥繁忙
- 非常容易使用
- 名片打印功能
- 係統資源高效
- 輕鬆定制的
- 競爭性定價
- 免費電子郵件支持
前置作業
- 使用
管理者權限安裝 - 一路
Next到底

任務目標
- 移除程式新增成員限制、新增群組限制。
- 移除或修改未註冊字樣。
分析程式
- 開啟
PixtopianBook.exe - 會要求你建立一個使用者,用於存放
profile

- 要你選擇使用者
- 勾選左下角的
Do not show this dialog next time. - 按下
LogIn

新增聯絡人
新增到第四位後,要新增第五位時彈出
You've reached the limit of 4 entries per group. Please register PixtopianBook today!新增群組
新增到第三組後,要新增第四組時彈出
You've reached the limit of 3 groups. Please register PixtopianBook today!

看到標題欄內有
UNREGISTERED VERSION字眼點擊
Help->About PixtopianBook...彈出視窗底下也有
unregistered version v1.0.7主程式中提示區塊也有
This is an unregistered version of PoxtopianBook. Please register today!簡單來說,就是要你趕快花錢註冊

檢驗顯示是使用Microsoft Visual C++ v6.0編寫。

搜尋思路
- 使用搜尋字串找關鍵字。
- 暫停 + 執行到使用者代碼(
Alt +F9)
修改思路
- 移除或是跳過驗證。
- 搜尋字串找關鍵字,修改未註冊字樣。
實際分析
- 開啟
C:\Program Files (x86)\PixtopianBook\PixtopianBook.exe F9執行程式- 會發現
x64dbg暫停了,主程式沒有被開啟 - 看到左下角有提示訊息
First chance exception on 7576C41F (E06D7363, CPP_EH_EXCEPTION)! - 解決方式請參考x64dbg - 第二章 | 認識x64dbg的
偏好設定,新增忽略異常範圍。
Ctrl + F2重新啟動(S)F9執行程式主程式正常啟動
Add新增聯絡人 (內容都不填寫)新增到第四位後,要新增第五位時彈出
You've reached the limit of 4 entries per group. Please register PixtopianBook today!回到
x64dbgF12暫停(P)注意標題,領空變成
user32.dllAlt + F9執行到使用者代碼(U)左下角由
暫停變成執行回到主程式
提示視窗按下
確定注意標題,領空變成
pixtopianbook.exe,並停在0045631B | 5E | pop esi |此時不知何處調用了這個
callF8一步一步過,直到ret後,就會跳轉回調用的位址停在
00412DEA | E9 DD000000 | jmp pixtopianbook.412ECC |向上觀察
1
2
3
4
5
6
7
8
9
10
11
1200412DBE | 8B8E BC010000 | mov ecx,dword ptr ds:[esi+1BC] | esi+1BC:"??"
00412DC4 | 8BF8 | mov edi,eax |
00412DC6 | 8B04F9 | mov eax,dword ptr ds:[ecx+edi*8] |
00412DC9 | 8D2CFD 00000000 | lea ebp,dword ptr ds:[edi*8] |
00412DD0 | 83F8 04 | cmp eax,4 |
00412DD3 | 7C 1A | jl pixtopianbook.412DEF |
00412DD5 | 8B4C24 10 | mov ecx,dword ptr ss:[esp+10] |
00412DD9 | 6A 10 | push 10 |
00412DDB | 68 00F74800 | push pixtopianbook.48F700 | 48F700:"Please register PixtopianBook"
00412DE0 | 68 68FC4800 | push pixtopianbook.48FC68 | 48FC68:"You've reached the limit of 4 entries per group.\n\nPlease register PixtopianBook today!"
00412DE5 | E8 03350400 | call pixtopianbook.4562ED |
00412DEA | E9 DD000000 | jmp pixtopianbook.412ECC |00412DE5 | E8 03350400 | call pixtopianbook.4562ED |間接callMessageBox00412DDB | 68 00F74800 | push pixtopianbook.48F700 | 48F700:"Please register PixtopianBook"與00412DE0 | 68 68FC4800 | push pixtopianbook.48FC68 | 48FC68:"You've reached the limit of 4 entries per group.\n\nPlease register PixtopianBook today!"是彈出視窗的內容jl pixtopianbook.412DEF跳轉實現(jl = 若低於則跳越),會跳轉過彈出訊息視窗向上觀察
cmp eax,4,表示聯絡人數量與4比較可以知道聯絡人的上限是
4
F9執行程式Add Group新增群組 (群組名隨意)新增到第三組後,要新增第四組時彈出
You've reached the limit of 3 groups. Please register PixtopianBook today!回到
x64dbgF12暫停(P)注意標題,領空變成
user32.dllAlt + F9執行到使用者代碼(U)左下角由
暫停變成執行回到主程式
提示視窗按下
確定注意標題,領空變成
pixtopianbook.exe,並停在0045631B | 5E | pop esi |此時不知何處調用了這個
callF8一步一步過,直到ret後,就會跳轉回調用的位址停在
00408B1D | 5E | pop esi | esi:"piG"==&"佳G"向上觀察
1
2
3
4
5
6
7
8
9
10
11
12
1300408AF1 | 8B83 A4000000 | mov eax,dword ptr ds:[ebx+A4] |
00408AF7 | 6A 00 | push 0 |
00408AF9 | 68 46010000 | push 146 |
00408AFE | 50 | push eax |
00408AFF | FF15 D0564700 | call dword ptr ds:[<&SendMessageA>] |
00408B05 | 83F8 03 | cmp eax,3 |
00408B08 | 7C 2A | jl pixtopianbook.408B34 |
00408B0A | 6A 10 | push 10 |
00408B0C | 68 00F74800 | push pixtopianbook.48F700 | 48F700:"Please register PixtopianBook"
00408B11 | 68 B4F64800 | push pixtopianbook.48F6B4 | 48F6B4:"You've reached the limit of 3 groups.\n\nPlease register PixtopianBook today!"
00408B16 | 8BCB | mov ecx,ebx |
00408B18 | E8 D0D70400 | call pixtopianbook.4562ED |
00408B1D | 5E | pop esi | esi:"piG"==&"佳G"00408B18 | E8 D0D70400 | call pixtopianbook.4562ED |間接callMessageBox00408B0C | 68 00F74800 | push pixtopianbook.48F700 | 48F700:"Please register PixtopianBook"與00408B11 | 68 B4F64800 | push pixtopianbook.48F6B4 | 48F6B4:"You've reached the limit of 3 groups.\n\nPlease register PixtopianBook today!"是彈出視窗的內容jl pixtopianbook.408B34跳轉實現(jl = 若低於則跳越),會跳轉過彈出訊息視窗向上觀察
cmp eax,3,表示群組數量與3比較可以知道群組的上限是
3
分析總結
00412DD3為聯絡人限制判斷位址。00408B08為群組限制判斷位址。
修改思路
根據分析總結
- 將兩個判斷位置使用
jmp直接跳轉實現。
實際修改
開啟
C:\Program Files (x86)\PixtopianBook\PixtopianBook.exe00412DD3 | 7C 1A | jl pixtopianbook.412DEF |按下空白鍵將指令修改為
jmp 0x00412DEF,按下確定修改後如下
1
2
3
4// 修改前
00412DD3 | 7C 1A | jl pixtopianbook.412DEF |
// 修改後
00412DD3 | EB 1A | jmp pixtopianbook.412DEF |00408B08 | 7C 2A | jl pixtopianbook.408B34 |按下空白鍵將指令修改為
jmp 0x00408B34,按下確定修改後如下
1
2
3
4// 修改前
00408B08 | 7C 2A | jl pixtopianbook.408B34 |
// 修改後
00408B08 | EB 2A | jmp pixtopianbook.408B34 |點擊
修補程式或是快捷鍵Ctrl + P點擊
修補檔案(P)另存檔名
PixtopianBook.crack.exe恭喜補丁產生
PixtopianBook.crack.exe
註:搜尋字串找關鍵字,修改未註冊字樣;這邊就不做示範。如果有相同的字串,都改改看即可找到正確的。

實際驗證
- 開啟
C:\Program Files (x86)\PixtopianBook\PixtopianBook.crack.exe - 新增聯絡人,成功破解人數限制
4 - 新增群組,成功破解群組限制
3

註:以上參考了
x64dbg
x64dbg’s documentation!
CSDN billvsme的专栏 的 OllyDbg 使用笔记 (五)
