持續更新ing~~~~
前言
參考並推薦以下博文:
https://xz.aliyun.com/t/4205#toc-11
IDA使用
一、操作技巧
- C:將十六進制數據分析為代碼;D鍵--當作數據進行分析;P鍵--將該段代碼分析為函數。
- CTRL+S:打開段視圖,可以選擇某個數據段進行跳轉。
- x:光標停留在某個函數、變量,按該鍵,可以查看交叉引用。
- n:重命名變量或函數。
- y:更改變量的類型。
- u:取消對函數、代碼、數據的定義。
- 打開函數調用圖:菜單欄中,view-->graphs-->Function calls(快捷鍵Ctrl+F12)。
CTRL+F7:
運行至返回,直到遇到RETN(或斷點)時才停止。- Alt+K:修改棧指針。實在改不對就nop掉吧。
二、一些疑問和想法
- idc腳本的使用--加密與解密P83。
- 如果函數中存在花指令或者一些故意破壞堆棧的指令,可以先patch掉后按p分析為函數。
- 在創建函數時,若無法確定函數結束位置或者發現非法指令,則會創建失敗。alt+p創建一個函數,需要設定開頭和結尾。如果還不行,就在編輯里創建一個新的segment。
- 導入自己設計的結構體或C庫中的:View-->Open Subviews-->Local Types中可以看到本地已有的結構體,在該窗口中右擊insert可以添加新的結構體。
- ida似乎無法同時調試父子進程(在子進程中使用ptrace(0,0,0,0)時),暫時沒有深入研究。
- patch后的代碼需要在Edit-->Patch Progam-->Apply patches to input file才能保存到原文件。
- 撤銷patch,Edit-->Keypatch-->undo last patch。
- 如果打了很多次patch,不好分清該撤銷哪一次的patch,那么可以在菜單欄中打開patched bytes界面。(view-->open subviews-->patched bytes)
Linux使用部分
- 查看進程信息:
ps -ef | grep 進程名 ls -l /proc/進程id
- 。。。
雜七雜八調試技巧匯總
1.javascript調試
按F12,如下圖打開控制台,點擊Source,可以在js文件里雙擊代碼所在的行下斷點。
點擊該按鈕開始執行程序或繼續執行。
添加一句代碼console.log( xxx )來打印輸出自己想要獲取的信息。