day01.全局变量赋值语句
1
2
3
4
5
6
7
8
9
10
|
#include <stdio.h>
int
gi;
void
main()
{
_asm mov eax,eax;
//伪代码使用ollydbg定位到这行
gi = 12;
return
0;
}
|
使用ollydbg工具调试在window里情况:
0041139E 8BC0 MOV EAX,EAX ###伪代码
004113A0 C705 54754100 0>MOV DWORD PTR DS:[417554],0C
004113A0是gi存的地址,0C是对应10进制的12,将12存入417554这个内存地址里面
使用gcc工具调试在linux里情况:
使用命令: gcc -S -masm=intel gi.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
.LFB0:
.cfi_startproc
push rbp
.cfi_def_cfa_offset
16
.cfi_offset
6
, -
16
mov rbp, rsp
.cfi_def_cfa_register
6
mov DWORD PTR gi[rip],
12
//12的值
mov eax, DWORD PTR gi[rip]
mov esi, eax
mov edi, OFFSET FLAT:.LC0
mov eax,
0
call printf
mov eax, DWORD PTR gi[rip]
pop rbp
.cfi_def_cfa
7
,
8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident
"GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609"
.section .note.GNU-stack,
""
,@progbits
|