- 前言
- 一.滴水逆向指针2
- 1 列出每一行的反汇编代码:
- 2、列出每一行的反汇编代码:
- 3、完成代码,实现数组值的互换
今天才用到这种模版,以后就用这种方法记录了。也好看也好写也连贯。
一.滴水逆向指针2 1 列出每一行的反汇编代码:char a = 10; mov byte ptr[a], 0Ah short b = 20; mov eax, 14h mov word ptr[b], ax int c = 30; mov dword ptr[c], 1Eh char* pa = &a; lea rax, [a] mov qword ptr[pa], rax short* pb = &b; lea rax,[b] mov qword ptr[pb], rax int* pc = &c; lea rax, [c] mov qword ptr[pc], rax char** ppa = &pa; lea rax, [pa] mov qword ptr[ppa], rax short** ppb = &pb; lea rax, [pb] mov qword ptr[ppb], rax int** ppc = &pc; lea rax, [pc] mov qword ptr[ppc], rax2、列出每一行的反汇编代码:
int p = 10; int******* p7; int****** p6; int***** p5; int**** p4; int*** p3; int** p2; int* p1; p1 = &p; lea rax, [p] mov qword ptr[p1], rax p2 = &p1; lea rax, [p1] mov qword ptr[p2], rax p3 = &p2; lea rax, [p2] mov qword ptr[p3], rax p4 = &p3; lea rax, [p3] mov qword ptr[p4], rax p5 = &p4; lea rax, [p4] mov qword ptr[p5], rax p6 = &p5; lea rax, [p5] mov qword ptr[p6], rax p7 = &p6; lea rax, [p6] mov qword ptr[p7], rax3、完成代码,实现数组值的互换
void Function() { int arr[5] = { 1,2,3,4,5 }; //..此处添加代码,使用指针,将数组的值倒置 int* p=arr; int temp; for (int i = 0; i < 2; i++) { temp = *(p + i); *(p + i) = *(p + 4-i); *(p + 4-i) = temp; } //打印数组值的代码已经写完,不需要修改 for (int k = 0; k < 5; k++) { printf("%dn", *(p + k)); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)