2012年8月13日 星期一

crackme-VB








測試程序:crackVB
程序作者:網路載的 不曉得作者
用到的工具:OD PEID0.95(或更高版本)


建議先自己破解玩玩看



載點



/////////////////
教程會教到VB中的msgbox框斷點
VB中msgbox與其他語言的messagebox斷點區不同
所以斷點為rtcMsgBox
////////////////

首先用PEID來看一下有沒有殼  Microsoft Visual Basic 5.0 / 6.0
摁 如果沒殼就好辦

接下來OD來附加crackVB 
就這樣停在一開始的地方
STEP1.png 

現在我們要知道可以用甚麼斷點切入裡面
我們用F9運行crackvb
step2.png 

它出現註冊碼錯誤的提示框
這樣我們就可以知道它的註冊原理

程序開啟->訪問註冊表->判斷註冊表的值----->正確的話就跳到註冊成功窗體(猜測)
                                     └>註冊錯誤就跳到註冊窗體(猜測)
最後兩條線都指向程序結束



現在我們按 button.png 或者Ctrl+F2重新程序
之後停在一開始的地方 
並且我們要從彈框這裡開始切入
我們下斷 : bp rtcMsgBox (注意大小寫)
step3.png 

斷點下了後可以到斷點區看有沒有成功設斷點 
按下F9讓程序運行
它就會明顯斷在msgbox框
step4.png 

斷在這之後可以開始進我們的切入點
按下 alt+k 
STEP5.png 

看到堆棧中的調用
按下alt+c後 我們跟蹤到那個堆棧的調用 00402D4C
step6.png 

00402D46   .  FF15 48104000 call dword ptr ds:[<&MSVBVM60.#595>]     ;  MSVBVM60.rtcMsgBox
現在在這裡斷點後按F9

我們滾輪往上看看
  1. 00402CD1   .  68 B0020000   push 0x2B0
  2. 00402CD6   .  68 F81C4000   push CHACKVB.00401CF8
  3. 00402CDB   .  56            push esi
  4. 00402CDC   .  50            push eax
  5. 00402CDD   .  FF15 34104000 call dword ptr ds:[<&MSVBVM60.__vbaHresu>;  MSVBVM60.__vbaHresultCheckObj
  6. 00402CE3   .  FF15 40104000 call dword ptr ds:[<&MSVBVM60.__vbaExitP>;  MSVBVM60.__vbaExitProc
  7. 00402CE9   .  9B            wait
  8. 00402CEA   .  68 BF314000   push CHACKVB.004031BF
  9. 00402CEF   .  E9 B5040000   jmp CHACKVB.004031A9
  10. 00402CF4   >  B8 04000280   mov eax,0x80020004
  11. 00402CF9   .  8985 78FFFFFF mov dword ptr ss:[ebp-0x88],eax
  12. 00402CFF   .  BF 0A000000   mov edi,0xA
  13. 00402D04   .  89BD 70FFFFFF mov dword ptr ss:[ebp-0x90],edi
  14. 00402D0A   .  8945 88       mov dword ptr ss:[ebp-0x78],eax
  15. 00402D0D   .  897D 80       mov dword ptr ss:[ebp-0x80],edi
  16. 00402D10   .  8945 98       mov dword ptr ss:[ebp-0x68],eax
  17. 00402D13   .  897D 90       mov dword ptr ss:[ebp-0x70],edi
  18. 00402D16   .  C785 B8FEFFFF>mov dword ptr ss:[ebp-0x148],CHACKVB.004>
  19. 00402D20   .  899D B0FEFFFF mov dword ptr ss:[ebp-0x150],ebx
  20. 00402D26   .  8D95 B0FEFFFF lea edx,dword ptr ss:[ebp-0x150]
  21. 00402D2C   .  8D4D A0       lea ecx,dword ptr ss:[ebp-0x60]
  22. 00402D2F   .  FFD6          call esi
  23. 00402D31   .  8D85 70FFFFFF lea eax,dword ptr ss:[ebp-0x90]
  24. 00402D37   .  50            push eax
  25. 00402D38   .  8D4D 80       lea ecx,dword ptr ss:[ebp-0x80]
  26. 00402D3B   .  51            push ecx
  27. 00402D3C   .  8D55 90       lea edx,dword ptr ss:[ebp-0x70]
  28. 00402D3F   .  52            push edx
  29. 00402D40   .  6A 00         push 0x0
  30. 00402D42   .  8D45 A0       lea eax,dword ptr ss:[ebp-0x60]
  31. 00402D45   .  50            push eax
複製代碼
我們看看這些
這些都是我們不需要分析的地方 (只是放入一些提示框需要的信息)
往上看看後可以發現
  1. 00402C2F   .  83C4 40       add esp,0x40
  2. 00402C32   .  66:85FF       test di,di
  3. 00402C35   .  0F84 B9000000 je CHACKVB.00402CF4
  4. 00402C3B   .  A1 20404000   mov eax,dword ptr ds:[0x404020]
複製代碼
我們在這裡可以發現關鍵點
為什麼呢..?
因為下面有
  1. 00402C4E   .  FF15 D0104000 call dword ptr ds:[<&MSVBVM60.__vbaNew2>]             ;  MSVBVM60.__vbaNew2
複製代碼
在這裡它的函數意思就表開新視窗那麼這可能就是我上面說的 "註冊成功窗體"
我們來測試看下
00402C35 . 0F84 B9000000 je CHACKVB.00402CF4
把它改成nop
step7.png 

這就是傳說中的暴力破解
nop掉後 F9執行一下程序
它就會
step8.png

沒有留言:

張貼留言