快速定位关键爆破点的几种方法
crackme程序名叫 Acid burn.exe,這是NCK破解第二課的課后練習題。
API斷點法:
GetMessageBoxA下斷,然后跟到上層函數,運行到返回
跟到 42FB1D 可以看到上面不遠處42FB03 有一個if else 將它nop掉或者改成je
這個jne上面有一個函數調用,可能是檢測密碼的,改成je或nop后,密碼錯誤會進入正確的執行流程
再往上 42FA52 可能是檢測用戶名長度的函數,經測試,長度<4直接打印密碼錯,修改下面的JCC,改成JMP,即完成破解。
關卡2方法類似,修改 0042F4D5 改成NOP即完成破解
字符串查找法:
搜索字符串,除了提示信息外,還找到了一些奇怪的東西,經測試就是密碼
Hello Dude!
字符串交叉搜索:
使用ida搜字符串,如果要搜索中文字符串,則要加上 -dCULTURE=all 參數
搜索到之后,點X交叉引用,得到地址,再去OD里面跟就行了。
ALT+K暫停法(調用堆棧法):
彈出對話框后,點暫停,然后按K轉到調用堆棧視圖,可以找到MessageBoxA。
后面的步驟和前面的方法一樣。往上跟就能找到關鍵判斷點。
訪問斷點法:
在OD里搜字符串可能搜不到,但是在內存視圖里就可能會搜到。彈出提示錯誤信息后,記下字符串
按M轉到內存視圖,搜索字符串,就能搜到“注冊失敗”字樣,然后點擊內存訪問斷點,就能找到MessageBoxA。
硬件訪問字節斷點也可以。
如果沒斷下來,說明是OD插件導致的,換成x32dbg試試。
自動跟蹤法(控制臺程序找入口點):
假設主函數內有阻塞,可以這樣找主函數:自動步過,直到在某個函數卡住,然后進入該函數,繼續自動步過,如此反復,即可找到主函數。
總結
以上是生活随笔為你收集整理的快速定位关键爆破点的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改PE可选头关闭ASLR
- 下一篇: C语音和易语言实现内存补丁