J.J. Huang   2019-09-01   x64dbg   瀏覽次數:次  

x64dbg - 第二十七章 | 反匯編練習(十六)

📑 目錄
  1. 目標程式
  2. 程式簡介
  3. 前置作業
  4. 任務目標
  5. 分析程式
  6. 額外補充
  7. 輔助程式
  8. 輔助程式簡介
  9. 輔助程式前置作業
  10. 輔助程式使用簡單示範
  11. 搜尋思路
  12. 修改思路
  13. 實際分析
  14. 分析總結
  15. 修改思路
  16. 實際修改
  17. 心得分享

目標程式

檔案下載:urlegal33.exe
解壓密碼:morosedog


程式簡介

URLegal能檢查你的書籤文件並找出無效鏈接。你能選擇測試單一文件或是檢查子目錄,文件中的每一HTTP URL將自動通過連接到目標網站和接收具體的HTML頁面進行測試,結果在一文本窗口中進行展示。


前置作業

  • 下載目標程式並解壓縮
  • 執行SETUP.EXE,一路Next安裝
  • Finish開啟主程式

任務目標

  • 移除所有的Nag視窗

分析程式

  • 執行URLegal.exe​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 開啟主程式

  • 點擊File

  • 點擊Register...​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 彈出Registering視窗

  • 輸入NameCode

  • 點擊Validata My Codes​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 彈出Name / Code mis-match. Try again. (名稱/代碼不匹配。 再試一次)

  • 關閉主程式

  • 彈出How did you like URLegal?視窗​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 點擊右上角X

  • 會自對開啟Windows 說明及支援

  • 點擊I will Register Soon​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 正常關閉主程式

x64dbg - 第二十七章 - 圖 1 (01)

檢驗顯示是使用Microsoft Visual C++ 6.0編寫。​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

x64dbg - 第二十七章 - 圖 2 (02)


額外補充

1
2
3
4
5
6
7
INT_PTR DialogBoxParamA(
HINSTANCE hInstance,
LPCSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogFunc,
LPARAM dwInitParam
);
1
2
3
4
5
6
7
HWND CreateDialogParamA(
HINSTANCE hInstance,
LPCSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogFunc,
LPARAM dwInitParam
);
  • hInstance,類型:HINSTANCE:包含對話框模板的模組句柄。如果此參數為NULL,則使用當前可執行文件。

    • hInstanceWindwos來說是一個獨一無二的數字,是用來標記這個對話框的句柄
  • 兩個模式的對話框,區別為是否允許使用者在不同窗口間進行切換;模式對話框為不允許,非模式對話框允許。​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 模式對話框,是由Windwos為它內建一個消息循環;非模式對話框,則是通過使用者程序中的消息循環派送。

  • 模式對話框的簡單範例:
    x64dbg - 第二十七章 - 圖 3 (03)


輔助程式

檔案下載:eXeScope.exe
解壓密碼:morosedog​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌


輔助程式簡介

這是一套可將程式中的英文字挑出來加以修改、翻譯,將軟體轉成中文的操作介面來,它包括可更改選單menu、字體font、對話方塊dialog,它還能直接修改EXEDLLOCX..etc.


輔助程式前置作業

  • 下載目標程式並解壓縮
  • 右鍵點選eXeScope.exe
  • 點選內容
  • 點選相容性
  • 勾選以系統管理員的身份執行此程式

註:不然開啟程式都會是僅可讀取模式,無法進行寫入修改。

輔助程式使用簡單示範

  • 開啟eXeScope.exe​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 點擊文件(F)->打開(O)

  • 選擇C:\Program Files (x86)\URLegal\Urlegal.exe

    • 建議先備份一份Urlegal.exe
  • 展開資源->對話框​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 找尋標題為How did you like URLegal?

  • 點擊測試顯示 (可以預覽該對話框)

  • 點擊對話框編輯器(&D) (可以編輯對話框的物件位置、大小..等等)​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 編輯對話框內的網址

  • Dialog: 103Static: http://www.worldlynx.net/pgerhart/

    注意:103 (十進制)0x67 (十六進制)表示為Nag視窗的hInstance​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 修改http://www.worldlynx.net/pgerhart/ -> https://morosedog.gitlab.io/

  • 點擊保持更新

  • 點擊確定​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 執行URLegal.exe

  • 開啟主程式

  • 關閉主程式​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 彈出How did you like URLegal?視窗

  • URL已經確定被修改了

x64dbg - 第二十七章 - 圖 4 (04)​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌


搜尋思路

  • 使用搜尋字串找關鍵字
  • 根據堆疊的調用,判斷產生Nag視窗的函數位置
  • 使用eXeScope工具查找關鍵位址

修改思路

  • 針對彈出的Nag視窗做處理

實際分析

  • 開啟URLegal.exe

  • 於反匯編視窗點選右鍵選擇搜尋(S)->目前模組->指令(O)

  • 輸入push 0x67​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

    1
    2
    位址       反組譯    
    00401240 push 67
  • 點擊位址=00401240 反組譯=push 67

  • 跳轉到00401240 | 6A 67 | push 67 |

  • 向上觀察​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    00401220   | 55                    | push ebp                                 |
    00401221 | 8BEC | mov ebp,esp |
    00401223 | 6A FF | push FFFFFFFF |
    00401225 | 68 05744100 | push urlegal.417405 |
    0040122A | 64:A1 00000000 | mov eax,dword ptr fs:[0] |
    00401230 | 50 | push eax |
    00401231 | 64:8925 00000000 | mov dword ptr fs:[0],esp |
    00401238 | 51 | push ecx |
    00401239 | 894D F0 | mov dword ptr ss:[ebp-10],ecx |
    0040123C | 8B45 08 | mov eax,dword ptr ss:[ebp+8] |
    0040123F | 50 | push eax |
    00401240 | 6A 67 | push 67 |
  • 找尋push ebp入口點

  • 00401220 | 55 | push ebp |右鍵選擇尋找參考(R)->選定的位址(S)

  • 可見以下位址參考​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

    1
    2
    位址       反組譯                
    004023BB call urlegal.401220
  • 點擊位址=004023BB 反組譯=call urlegal.401220

  • 跳轉到004023BB | E8 60EEFFFF | call urlegal.401220 |

  • 向上觀察​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

    1
    2
    3
    4
    5
    6
    004023AA   | E8 691A0000           | call urlegal.403E18                      |
    004023AF | 85C0 | test eax,eax |
    004023B1 | 75 43 | jne urlegal.4023F6 |
    004023B3 | 6A 00 | push 0 |
    004023B5 | 8D8D 98FEFFFF | lea ecx,dword ptr ss:[ebp-168] |
    004023BB | E8 60EEFFFF | call urlegal.401220 |
  • 會發現004023B1 | 75 43 | jne urlegal.4023F6 |跳轉未實現

  • 可跳過004023BB | E8 60EEFFFF | call urlegal.401220 |

  • test eax,eax影響jne的跳轉結果​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • call urlegal.403E18會異動eax的值

  • 004023AA設定中斷點

  • 移除其他中斷點​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • F9執行程式

  • 關閉主程式

  • 斷點在004023AA | E8 691A0000 | call urlegal.403E18 |​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • F7步入

  • 觀察程式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    00403E18   | 55                    | push ebp                                 |
    00403E19 | 8BEC | mov ebp,esp |
    00403E1B | 51 | push ecx | ecx:"艇A"==&"甋A"
    00403E1C | 894D FC | mov dword ptr ss:[ebp-4],ecx |
    00403E1F | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |
    00403E22 | 8B40 2C | mov eax,dword ptr ds:[eax+2C] |
    00403E25 | 8BE5 | mov esp,ebp |
    00403E27 | 5D | pop ebp |
    00403E28 | C3 | ret |
  • F8一步一步過,並持續觀察​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 步過到下方指令時

    1
    2
    00403E1F   | 8B45 FC               | mov eax,dword ptr ss:[ebp-4]             |
    00403E22 | 8B40 2C | mov eax,dword ptr ds:[eax+2C] |
  • mov eax,dword ptr ss:[ebp-4]mov eax,dword ptr ds:[eax+2C]會異動eax的值

  • 00403E1F | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |按下空白鍵​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 將指令修改為mov eax, 0x1,按下確定

  • 修改後如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // 修改前
    00403E18 | 55 | push ebp |
    00403E19 | 8BEC | mov ebp,esp |
    00403E1B | 51 | push ecx | ecx:"艇A"==&"甋A"
    00403E1C | 894D FC | mov dword ptr ss:[ebp-4],ecx |
    00403E1F | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |
    00403E22 | 8B40 2C | mov eax,dword ptr ds:[eax+2C] |
    00403E25 | 8BE5 | mov esp,ebp |
    00403E27 | 5D | pop ebp |
    00403E28 | C3 | ret |
    // 修改後
    00403E18 | 55 | push ebp |
    00403E19 | 8BEC | mov ebp,esp |
    00403E1B | 51 | push ecx | ecx:"艇A"==&"甋A"
    00403E1C | 894D FC | mov dword ptr ss:[ebp-4],ecx |
    00403E1F | B8 01000000 | mov eax,1 |
    00403E24 | 90 | nop |
    00403E25 | 8BE5 | mov esp,ebp |
    00403E27 | 5D | pop ebp |
    00403E28 | C3 | ret |
  • F9執行程式​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 主程式正常關閉

  • 沒有彈出Nag視窗


分析總結

  • 004023AA判斷是否註冊的位址
  • 00403E1F00403E22判斷是否跳轉關鍵

修改思路

  • 修改直接賦予eax的值為0x1

實際修改

  • 開啟URLegal.exe​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 反匯編視窗中按下Ctrl + G輸入00403E1F,會跳轉到00403E1F位址

  • 00403E1F | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |按下空白鍵

  • 將指令修改為mov eax, 0x1,按下確定​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 修改後如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // 修改前
    00403E18 | 55 | push ebp |
    00403E19 | 8BEC | mov ebp,esp |
    00403E1B | 51 | push ecx | ecx:"艇A"==&"甋A"
    00403E1C | 894D FC | mov dword ptr ss:[ebp-4],ecx |
    00403E1F | 8B45 FC | mov eax,dword ptr ss:[ebp-4] |
    00403E22 | 8B40 2C | mov eax,dword ptr ds:[eax+2C] |
    00403E25 | 8BE5 | mov esp,ebp |
    00403E27 | 5D | pop ebp |
    00403E28 | C3 | ret |
    // 修改後
    00403E18 | 55 | push ebp |
    00403E19 | 8BEC | mov ebp,esp |
    00403E1B | 51 | push ecx | ecx:"艇A"==&"甋A"
    00403E1C | 894D FC | mov dword ptr ss:[ebp-4],ecx |
    00403E1F | B8 01000000 | mov eax,1 |
    00403E24 | 90 | nop |
    00403E25 | 8BE5 | mov esp,ebp |
    00403E27 | 5D | pop ebp |
    00403E28 | C3 | ret |
  • 點擊修補程式 或是快捷鍵Ctrl + P

  • 點擊修補檔案(P)​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌‌​​‌​​‌‌​​​​​​‌‌​​​‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌​‌‌​​​‌‌​‌​​​‌‌​​‌​​​‌‌​​​‌​​‌‌​​‌‌‌​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​‌‌‌

  • 另存檔名URLegal.crack.exe

  • 恭喜補丁產生URLegal.crack.exe


心得分享

  • 搜尋的方式這邊僅示範了尋找參考
  • 亦可使用暫停的方式,找尋堆疊也可找到關鍵位置

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