函式指標的定義:
返回型別 (呼叫約定 *變數名)(引數列表);
例如:int (_cdecl *myfun)(int,int);
一般都用來呼叫非本身程式提供的函式來進行使用
**如下:
#includeint main()
反彙編如下:
5: int (_cdecl *myfun)(int,int);
6:7: int i=10;
00401028 mov dword ptr [ebp-8],0ah //將當前的i變數的位址賦值給ebp-8指向的位址中
8:9: myfun = (int (__cdecl *)(int,int))&i;
0040102f lea eax,[ebp-8] //將當前定義好的函式指標的位址賦值給eax
00401032 mov dword ptr [ebp-4],eax // eax放到堆疊中 ebp-4的位置
10:11: myfun(1,2);
00401035 mov esi,esp //將當前棧頂的位址賦值給esi
00401037 push 2 //壓入堆疊 0x2
00401039 push 1 //壓入堆疊 0x1
0040103b call dword ptr [ebp-4] // 將當前位址+指令長度的值壓入堆疊,然後將函式指標指向位址中的值進行呼叫,eip改變
反彙編windows htonl 函式
因為自己在系統核心寫網路程式有時候需要呼叫htons htonl 這樣的函式進行轉換,但由於核心只能呼叫c執行庫,別的api不能呼叫。自己也接觸過一點彙編,從來沒有去學過。看過老碼識途這本書前幾章,如是自己反編譯試了一下,結果自己還真反出來,對於懂彙編的人確實非常容易。ulong myhtonl u...
跟據函式指標呼叫函式的反彙編
不說廢話,上來高階語言c 的源 int tmain int argc,tchar argv for int i 0 i 3 i 反彙編之後如下 text 004010a0 int cdecl wmain int argc,wchar t argv text 004010a0 wmain proc n...
C 遞迴函式反彙編
源 include using namespace std int sumrecursion int arr,int n return 0 int main int sum sumrecursion arr,5 cout sum sum endl 反彙編 重要部分已經注釋,可以看到.text 004...