IDA設定函式型別

2021-09-06 12:12:22 字數 1970 閱讀 3479

action name: settype

該命令允許你指定當前條目型別。

如果游標處在函式內部,那麼函式型別將會被編輯,否則當前條目的型別將被編輯。在這種情況下當前條目必須有乙個名字。

函式型別必須按照c定義輸入。ida將會使用型別資訊改進反彙編。

這裡是乙個函式定義的例子:

int main(int argc, const char *argv);
為了刪除型別定義,請輸入空字串。

ida支援使用者定義的呼叫規則。在呼叫規則中使用者可以顯式指定引數位置和返回值。例如:

int __usercall func(int x, int y);
表示函式有兩個引數:第乙個引數傳遞給堆疊,第二個引數傳遞給esi暫存器並且返回值儲存在ebx暫存器中。對於使用者定義原型通常的規則是:

- 返回值必須在暫存器中。
- 如果返回型別是"void",返回位置不能指定。
- 如果引數位置沒有指定,那麼就預設在堆疊上。堆疊位置隨之分配。
- 當前ida不能檢查暫存器大小,但是推薦指定正確的暫存器大小(例如,對於字元型別使用al暫存器)
- 允許使用巢狀定義例如:

int **__usercall func16(int *(__usercall *x)(int, long, int));

在這裡指標 "x" 被傳遞給esi暫存器;

指向的函式是乙個使用者定義呼叫型別的函式,第二個引數為ecx暫存器,返回值在ebx暫存器中。

這樣複雜的規則,應用在開啟引數列表時指定暫存器這種情況下。

- 暫存器作為位置名時必須對當預處理器有效。一些暫存器不被支援(如果一些暫存器名

不被支援請通知我們。如果可行我們會改進暫存器模型。

- 通過 這樣的轉殖可以指定暫存器對。
ida 同樣可以理解 "__userpurge" 呼叫方式。這種方式同 __usercall一致, 唯一不同的是這種呼叫會清空堆疊。

使用者定義的名稱將被ida忽略。

int __spoilsfunc(int x);

在函式定義處單擊右鍵,使用「設定函式型別(set function type)」功能, (或者 使用快捷鍵 「y」)來編輯函式定義(採用c declaration),這樣所有呼叫到這個函式的地方都會在入棧的引數後面加上其對應的變數注釋。

如果有rtti, 似乎是按照c++的mangle來

函式型別必須按照c定義輸入。ida將會使用型別資訊改進反彙編。

ida支援使用者定義的呼叫規則。在呼叫規則中使用者可以顯式指定引數位置和返回值。例如:

int __usercall func(int x, int y);

表示函式有兩個引數:第乙個引數傳遞給堆疊,第二個引數傳遞給esi暫存器並且返回值儲存在ebx暫存器中。對於使用者定義原型通常的規則是:

1)返回值必須在暫存器中。

2)如果返回型別是」void」,返回位置不能指定。

3)如果引數位置沒有指定,那麼就預設在堆疊上。堆疊位置隨之分配。

4) 當前ida不能檢查暫存器大小,但是推薦指定正確的暫存器大小(例如,對於字元型別使用al暫存器)

5) 允許使用巢狀定義例如:

int **__usercall func16(int *(__usercall *x)

(int, long, int));

在這裡指標 「x」 被傳遞給esi暫存器;

指向的函式是乙個使用者定義呼叫型別的函式,第二個引數為ecx暫存器,返回值在ebx暫存器中。

這樣複雜的規則,應用在開啟引數列表時指定暫存器這種情況下。

6) 暫存器作為位置名時必須對當預處理器有效。一些暫存器不被支援(如果一些暫存器名不被支援請通知我們。如果可行我們會改進暫存器模型。

7) 通過 這樣的轉殖可以指定暫存器對。

ida 同樣可以理解 「__userpurge」 呼叫方式。這種方式同 __usercall一致, 唯一不同的是這種呼叫會清空堆疊。 使用者定義的名稱將被ida忽略。

估計函式與迭代加深相結合 IDA 演算法

a 演算法的關鍵在於設計估價函式。既然估價函式與優先佇列bfs結合可以產生a 演算法,那麼估價函式能否與dfs結合呢?當然,dfs也有乙個缺點,就是一旦估價出現失誤,容易向下遞迴深入乙個不能產生最優解的分支,浪費許多時間。因此,我們最終選擇把估價函式與迭代加深的dfs演算法相結合。得到 ida 演算...

IOS變數設定 函式設定等

import d.h inte ce a nsobject bool myboolvalue1 在這裡宣告的,叫做成員變數 member variable 如果單單是在 裡宣告而沒有 property的話,這個變數只能在類內部訪問 bool myboolvalue2 d myvalue3 d myv...

型別轉換函式

型別轉換函式的作用是將乙個類的物件轉換成另一型別的資料.例如,如果已宣告了乙個complex類,可以在complex類中這樣定義型別轉換函式 operator double 函式返回double型變數m dreal的值.它的作用是將乙個complex類物件轉換為乙個double型資料,其值是comp...