1. 程式人生 > >[Android]安全第一步,使用IDA初步除錯一個c/c++的exe檔案

[Android]安全第一步,使用IDA初步除錯一個c/c++的exe檔案

下載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了~