OllyICE手拆OCR付費引擎


原本只是Coding需要用到把驗證碼圖內的驗證碼給取出來


大致上網路上Google了一下有三種方案:
 - Windows Office 插件 (不過對扭曲,有線條干擾的支持度很差)
 - Tessnet (好像是個開源專案,可以丟大量圖資讓引擎學習增加辨識度,不過不好用)
 - Asprise - OCR (這好像本來就開發給商業使用的所以本來是要付費der)

至於本文主角當然就是....付費的那個(?)
至於詳細怎麼調用這個函數庫不多做介紹(Google一下都有)
大致上在.NET上調用作法為:
[調用.NET的asprise-ocr-api.dll的API]→[根據平台自動切換為aocr.dll/aocr_x64.dll的函數做處理]

不過如果你用的是官方頁面上下載的試用版本會發現:
要求付費的提示
每幫開發者辨識五張驗證碼便跳出一次訊息提示付費訊息
(至於為啥我知道五次?因為後面逆向發現的XD)

大致上反編譯一下asprise-ocr-api.dll可以看到註冊機制設置的不在這裡面,而是藏在Win32的aocr.dll跟Win64的aocr_x64.dll內做檢測到底要不要幫你辨識圖片
asprise-ocr-api.dll沒有上花,餵給.NET Reflector直接可以翻code
OK,現在我們可以確定我們的目標是逆向aocr.dll身上(Win32)
看到那個訊息可以很直接了當的知道用了MessageBoxA/W(後來實測是用A)
在MessageBoxA下斷點F8跟蹤回呼叫點可以看到狀態在這
如果按是(yes)返回值為6,就會跳到0F2E67E0做一個Shell官方網站的頁面
如果不為6則繼續辨識圖片

往上翻可以看到在進入授權請求的這個block上面有個eax對edx做or運算
如果兩者or完不為空則直接跳至0F2E67FD繼續做辨識圖片的行為
找到爆破點了,在這邊下強跳
理論上到這邊就可以完美不跳出請求授權的視窗(我一開始也破解到這邊就收工了)
事隔幾個月後發現大事不妙,原來這層是在試用時間測試階段
意思是它好像有個次數給你用完就不能再繼續使用了Otz.
(所以你就算爆破跳窗問題也沒用,查了一下大部分網路上教學爆破也到這裡而已)

但可以往上翻一下會看到:
原來它在未使用過此引擎的電腦會先在註冊表生成一個鍵值存放剩餘次數
OK,現在真相大白惹,整個環節是:
引擎檢測授權→沒有授權就在註冊表開一個鍵值存放剩餘次數,並且每五次跳出授權請求視窗MessageBoxA→使用期限到了就不允許繼續使用辨識功能(也不會跳出授權請求視窗)

最後我的做法是直接在寫入鍵值做patch,避免剩餘次數,那麼就可以永保試用狀態
Patch的點大概是這樣

Ok,最後運行一下正確無誤並且剩餘次數不會再減少了

最後用OD把Patch點覆蓋到靜態文件,打完收工!
PS:鼓勵大家付費支持開發者啊...破解版傳送門不附上了XD...自己低調拆就好

留言

  1. Adr大大!小弟來膜拜一下xD

    回覆刪除
    回覆
    1. 問號XD 這很沒技術性的東西啊 只是想說網路上好像沒啥教學文就隨手寫一下

      刪除

張貼留言

這個網誌中的熱門文章

[C#] Lambda花式應用噁爛寫法(跨UI委派秒幹、多線程處理...etc)

[Black Asia Arsenal] puzzCode: 專注開發後門的編譯器, 自帶反逆向、對抗病毒特徵碼定位技術

[Windows] 逆向工程 C++ 中入口函數參數 main(argc, argv) 與如何正確的進行參數劫持