如何確定函式引數

2021-07-23 15:27:33 字數 459 閱讀 7159

簡單情況:

1)觀察呼叫處的**

push 3

push 2

push 1

call   0040100f

2)找到平衡堆疊的**繼續論證:

calll  0040100f

add   esp,   0ch

或者函式內部:

ret  4/8/0xc/0x10

3)最後,兩者一綜合,函式引數個數基本確定。

複雜情況觀察步驟:

1. 不考慮ebp、esp。

2. 只找給別人賦值的暫存器:eax 、ecx、 edx、ebx、esi、edi。

3.找到之後追查其**。如果,如果該暫存器的值不是在函式內被賦值的,那一定是傳進來的引數。

公式一: 暫存器 + ret   4 =  引數個數

公式二: 暫存器 + [ebp + 8]、[ebp + 0x]  = 引數個數

對於模版函式中模版是如何確定引數型別

下面來看幾個例子 1 一般情況,首先給出乙個結論 所有函式引數的型別都 只 是在引數列表中得出來的,例如 template mode func node a,mode b 如果我的函式是這樣用的 int a float b func a,b 這時候已經確定node 為int,mode為float。如...

java函式可變引數(不確定引數)的使用

當寫了一方方法後,想讓這個方法傳入不確定的引數值,就要用到可變引數 在jdk1.5加入了此方法,使用語法 資料型別 可變引數名稱 如 int data public class test public static int add int a return result 可變引數的本質是陣列,相當於...

FramBuffer引數確定

frambuffer引數的確定 1.lcd工作的硬體需求 要使一塊lcd正常的顯示文字或影象,不僅需要lcd 驅動器,而且還需要相應的lcd控制器。在通常情況下,生產廠商把lcd驅動器會以cof cog的形式與lcd玻璃基板製作在一起,而lcd控制器則是由外部的電路來實現,現在很多的mcu內部都整合...