通过Main函数一段代码来测试
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int glabel = 12;
int func(int a,int b) {
printf("haha");
return a + b + glabel;
}
int main(int argc, char * argv[]) {
func(10, 20);
return 0;
}
- 第三步 使用反汇编工具对可执行文件进行二进制代码分析
public _func
__text:00000001000017B0 _func proc near
__text:00000001000017B0
__text:00000001000017B0 var_C = dword ptr -0Ch
__text:00000001000017B0 var_8 = dword ptr -8
__text:00000001000017B0 var_4 = dword ptr -4
__text:00000001000017B0
__text:00000001000017B0 push rbp
__text:00000001000017B1 mov rbp, rsp
__text:00000001000017B4 sub rsp, 10h
__text:00000001000017B8 lea rax, aHaha
__text:00000001000017BF mov [rbp+var_4], edi
__text:00000001000017C2 mov [rbp+var_8], esi
__text:00000001000017C5 mov rdi, rax
__text:00000001000017C8 mov al, 0
__text:00000001000017CA call _printf
__text:00000001000017CF mov esi, [rbp+var_4]
__text:00000001000017D2 add esi, [rbp+var_8]
__text:00000001000017D5 add esi, cs:_glabel
__text:00000001000017DB mov [rbp+var_C], eax
__text:00000001000017DE mov eax, esi
__text:00000001000017E0 add rsp, 10h
__text:00000001000017E4 pop rbp
__text:00000001000017E5 retn
__text:00000001000017E5 _func endp
int globala = 0;
int func(int a, int b){
printf("haha");
return a + b + globala;
}