滴水逆向总纪录

滴水逆向总纪录,第1张

滴水逆向总纪录

滴水逆向从指针开始
  • 前言
  • 一.滴水逆向指针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], rax
2、列出每一行的反汇编代码:
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], rax

3、完成代码,实现数组值的互换
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));
	}

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5636186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存