[Android]安全第一步,使用IDA初步除錯一個c/c++的exe檔案
阿新 • • 發佈:2019-01-24
下載ida,注意要安裝python2.7,按照完畢後可以直接進行反編譯。之所以先使用C/C++作為第一個程式,是因為win程式可以簡單的理解,當然如果沒有對應的環境可以略過這一步,權當做是虛擬碼即可。
首先在c\c++編譯環境中敲入以下程式碼,然後debug
# include<stdio.h> char char_average(chararray[],int count) { int i; char average; average = 0; for(i = 0 ; i< count ;i++) average += array[i]; average /= count; return average; } int int_average(intarray[],int count) { int i; int average; average = 0; for(i = 0 ; i< count ;i++){ average += array[i]; } average /= count; return average; } int main(){ char chars[] = {1,2,3,4,5}; int ints[] = {1,2,3,4,5}; printf("charsaverage = %d\n",char_average(chars,sizeof(chars))); printf("intsaverage = %d\n",int_average(ints,sizeof(ints))); getchar(); }
以下是結果,,錯誤的主要原因因為是應該在呼叫函式int_average的時候,應該int_average(ints,sizeof(ints)/sizeof(ints[0])),由於char佔1個位元組,而int不是,32位機器上面佔有4位,結果出錯,下面繼續分析。
開啟ida,然後open開啟debug檔案下的exe檔案
然後選擇第一個
一直ok到底,
在functions window找到要檢視的函式int_average
然後右鍵新增斷點
然後在本地進行除錯,選擇windbg debuger,
之後按工具欄的綠色start按鈕或者F9快捷鍵,
到斷點區域點選
從而展開
點選進入就會發現進入了main函式就看到了原始引數資料,
然後選中想要檢視的行的資料,點選
即可檢視對應變數的值,然後一切就ok了~