史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 程式 & 網頁設計技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-12-12, 03:02 AM   #1 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 談談VB程序的破解

上次寫了VB程序的破解一文,這次因為發現那個方法不是通用的,所以特別寫一篇續.其實我這2篇文章並不是專門用於破解在啟動時檢測的程序的,我只是想說一個方法,利用VB中的事件,於是輕鬆找到程序的關鍵,各位要是有興趣可以跟一下,很簡單.廢話少說,執行VB6,新增一個工程,然後增加一個模組,雙按模組,刪除Form,再輸入:
Sub Main
MsgBox ("test!")
End
End Sub
然後編譯成本機程式碼,在這種情況下,我以前說的辦法就沒有用了,大家還是跟我來吧.

還是TRW載入,然後慢慢跟就到了這裡.
......
0187:6600DE5B FF1518110066 CALL `KERNEL32!GetStartupInfoA`
0187:6600DE61 0FB745D0 MOVZX EAX,WORD [EBP-30]
0187:6600DE65 A3D8F71066 MOV [6610F7D8],EAX
0187:6600DE6A FF35CCF61066 PUSH DWORD [6610F6CC]
0187:6600DE70 56 PUSH ESI
0187:6600DE71 BE70F41066 MOV ESI,6610F470
0187:6600DE76 8BCE MOV ECX,ESI
0187:6600DE78 E860000000 CALL 6600DEDD //進去
......
(省略程序)
......
0187:******** FF9694000000 CALL NEAR [ESI+94] //這裡F8進去就返回程序領空了,我們又成功的停在了VB程式碼開始的地方.
0187:******** 8D45D4 LEA EAX,[EBP-2C]
0187:******** 50 PUSH EAX
0187:******** E807030000 CALL 66014710
0187:******** 6A01 PUSH BYTE +01
0187:******** 58 POP EAX
0187:******** 5F POP EDI
0187:******** 5E POP ESI
0187:******** C9 LEAVE
0187:******** C20400 RET 04
......
0187:00401628 6A00 PUSH BYTE +00
0187:0040162A 50 PUSH EAX
0187:0040162B FF151C104000 CALL `MSVBVM60!rtcMsgBox` //這裡就是MsgBox了
0187:00401631 8D4DB0 LEA ECX,[EBP-50]
0187:00401634 8D55C0 LEA EDX,[EBP-40]
0187:00401637 51 PUSH ECX
0187:00401638 8D45D0 LEA EAX,[EBP-30]
0187:0040163B 52 PUSH EDX
0187:0040163C 8D4DE0 LEA ECX,[EBP-20]
0187:0040163F 50 PUSH EAX
0187:00401640 51 PUSH ECX
0187:00401641 6A04 PUSH BYTE +04
0187:00401643 FF1508104000 CALL `MSVBVM60!__vbaFreeVarList`
0187:00401649 83C414 ADD ESP,BYTE +14
0187:0040164C FF150C104000 CALL `MSVBVM60!__vbaEnd` //然後程序End
0187:00401652 6876164000 PUSH DWORD 00401676
0187:00401657 EB1C JMP SHORT 00401675


後記:
還有一種情況,是某個Crackme,是用VB6編寫的,我用了2種辦法都不能斷下來(其實是作者不按常理出牌).自己新增一個工程,然後編譯為本機程式碼,試試看,還能不能用上面的辦法斷下來?也就是說,在程序啟動時(或檢驗註冊碼前)沒有任何的事件,真的是很搞笑的一件事,這樣的程序,跟蹤只會在Msvbvm60.dll中,然後用ShowWindow顯示視窗,也就是說程序根本不是在啟動時進行檢測的(或者說檢測時沒有產生任何事件?可能嗎?).
我以為按我的方法,只要在VB程序中使用了事件或模組,無論是程序剛啟動或已執行,只要用TRW在這2處下了斷點,都能輕易的找到程序的關鍵處.如果各位有什麼意見和看法,還請指正
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:47 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1