看板 CodeJob 關於我們 聯絡資訊
※ 引述《chengcti (版主請投我一票!)》之銘言: : 花個 30min 做點逆向工程 tracking code : 1. Delphi 7 + Quickreport + Access 無壓縮, 無加殼 : 2. 本來我以為寫的多麼的厲害, tracking 到授權程式部分 : 搞了很長的時間 一直陷在裡面 本來打算重寫好了 : 後來發現那段授權程式 "是垃圾" : 原本他在每個功能會增加授權機制, 就是可以讓多使用者使用 : 依據不同的使用者 可以開啟不同的function (新增 刪除 修改) : 這段碼是去存取另外一個 table : 我原本計畫重建這個授權的 table (Basicpp) : 結果發現 "這段是垃圾" : 因為他根本就沒有 call 這段碼 : 他只做一個 : 當你去選擇 menuitem 上面的功能時 會 check 可不可以進去 : if bAccess then dosomething else ShowMessage('授權逾期') : cmp [$0048648], 00 ;if bAccess : jz exit ;jump ShowMessage : call [$0058304] ;next function 0053F1FC . 803D 2D7E5400>cmp byte ptr ds:[547E2D],0 ;檢查授權值是否為假 0053F203 . 74 49 je short 0053F24E ;可NOP此行即可 0053F205 . 8B0D 243A5400 mov ecx,dword ptr ds:[543A24] ; 0053F20B . 8B09 mov ecx,dword ptr ds:[ecx] 0053F20D . B2 01 mov dl,1 0053F20F . A1 20225200 mov eax,dword ptr ds:[522220] 0053F214 . E8 3792F3FF call 00478450 0053F219 . 8B15 083E5400 mov edx,dword ptr ds:[543E08] ; 0053F21F . 8902 mov dword ptr ds:[edx],eax 0053F221 . A1 083E5400 mov eax,dword ptr ds:[543E08] 0053F226 . 8B00 mov eax,dword ptr ds:[eax] 0053F228 . 8B15 98325400 mov edx,dword ptr ds:[543298] ; 0053F22E . 8902 mov dword ptr ds:[edx],eax 0053F230 . A1 083E5400 mov eax,dword ptr ds:[543E08] 0053F235 . 8B00 mov eax,dword ptr ds:[eax] 0053F237 . BA 64F25300 mov edx,0053F264 0053F23C . E8 1B00F2FF call 0045F25C 0053F241 . A1 083E5400 mov eax,dword ptr ds:[543E08] 0053F246 . 8B00 mov eax,dword ptr ds:[eax] 0053F248 . E8 5BD5F3FF call 0047C7A8 0053F24D . C3 retn 0053F24E > B8 94F25300 mov eax,0053F294 0053F253 . E8 D494EFFF call 0043872C 0053F258 . C3 retn : 3. 本來我想改所 bAccess 把所有的 bAccess remake 掉 (塞 nop) : 結果又發現 這是初學者寫的 所以 : 他在 FormCreate 做了一件事情 (default value) : bool bAccess := false; : mov [$0048648], 00 ; bAccess := 0; : 然後檢查日期 : if LeftStr(NowDate) < '2009/xx' then bAccess := true; : 結果我發現... 我直接把最前面的 default 為 true 就行了 : bool bAccess := true; : mov [$0048648], 01 : 只改一個 byte : 30min (price: free) 我是這樣弄,授權日是寫死在exe裡 0053EBCC . BA 90EC5300 mov edx,0053EC90 ; ASCII 0053EBD1 . E8 9657ECFF call 0040436C 0053EBD6 . C605 2D7E5400>mov byte ptr ds:[547E2D],0 ; 將授權值預設為假 0053EBDD . E8 D2C3ECFF call 0040AFB4 0053EBE2 . 83C4 F8 add esp,-8 0053EBE5 . DD1C24 fstp qword ptr ss:[esp] 0053EBE8 . 9B wait 0053EBE9 . 8D85 00FFFFFF lea eax,dword ptr ss:[ebp-100] 0053EBEF . 50 push eax 0053EBF0 . E8 FB10FBFF call 004EFCF0 0053EBF5 . 8D85 00FFFFFF lea eax,dword ptr ss:[ebp-100] 0053EBFB . BA 98EC5300 mov edx,0053EC98 ; ASCII 08,"20091031" 0053EC00 . E8 AB40ECFF call 00402CB0 ; 檢查當前日期 0053EC05 . 77 07 ja short 0053EC0E ;如上方CALL返回大於跳 0053EC07 . C605 2D7E5400>mov byte ptr ds:[547E2D],1 ;標記授權為真(小於) 0053EC0E > 33C0 xor eax,eax ;到此行 0053EC10 . 5A pop edx 0053EC11 . 59 pop ecx 0053EC12 . 59 pop ecx 0053EC13 . 64:8910 mov dword ptr fs:[eax],edx 0053EC16 . 68 23EC5300 push 0053EC23 0053EC1B > C3 retn ; RET 用 直接修改 asciiaddr 改為2099年即可,以防原作者在其他地方做檢查 -- ████ █ ★ ████ █ █ █ █ █ █ █ █ █ 超 級 熱 烈 歡 迎 █ ████ █ █ █ ████ █ █ █ █ █ ███★ █ █ 歡迎到嘉義版! ★███ █ █ █ █ █ █ █ 訊馳電腦-路徑嘉義市林森西路496號(05)2244-526順發斜對面 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.94.76 ※ 文章網址: https://www.ptt.cc/bbs/CodeJob/M.1461770035.A.A5C.html
TobyH4cker: 萬一2099年還在用呢(X 04/28 14:38
Catbert: 反正到時候原PO也早就退休了XDDDDD 04/28 17:35
redshoe: 總要留點工作機會給2099後的人 xD 04/28 20:24
chinoyan: 補上 OD資料 04/29 13:16
※ 編輯: chinoyan (59.127.94.76), 04/29/2016 13:24:48