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!
回到
x64dbg
F12
暫停(P)注意標題,領空變成
user32.dll
Alt + F9
執行到使用者代碼(U)左下角由
暫停
變成執行
回到主程式
提示視窗按下
確定
注意標題,領空變成
pixtopianbook.exe
,並停在0045631B | 5E | pop esi |
此時不知何處調用了這個
call
F8
一步一步過,直到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 |
間接call
MessageBox
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!"
是彈出視窗的內容jl pixtopianbook.412DEF
跳轉實現(jl = 若低於則跳越
),會跳轉過彈出訊息視窗向上觀察
cmp eax,4
,表示聯絡人數量與4
比較可以知道聯絡人的上限是
4
F9
執行程式Add Group
新增群組 (群組名隨意)新增到第三組後,要新增第四組時彈出
You've reached the limit of 3 groups. Please register PixtopianBook today!
回到
x64dbg
F12
暫停(P)注意標題,領空變成
user32.dll
Alt + F9
執行到使用者代碼(U)左下角由
暫停
變成執行
回到主程式
提示視窗按下
確定
注意標題,領空變成
pixtopianbook.exe
,並停在0045631B | 5E | pop esi |
此時不知何處調用了這個
call
F8
一步一步過,直到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 |
間接call
MessageBox
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!"
是彈出視窗的內容jl pixtopianbook.408B34
跳轉實現(jl = 若低於則跳越
),會跳轉過彈出訊息視窗向上觀察
cmp eax,3
,表示群組數量與3
比較可以知道群組的上限是
3
分析總結
00412DD3
為聯絡人限制判斷位址。00408B08
為群組限制判斷位址。
修改思路
根據分析總結
- 將兩個判斷位置使用
jmp
直接跳轉實現。
實際修改
開啟
C:\Program Files (x86)\PixtopianBook\PixtopianBook.exe
00412DD3 | 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 使用笔记 (五)