老码识途——在堆中构建mov和jmp指令

// asmjmp.cpp : 定义控制台应用程序的入口点。
//
#include <stdio.h>
#include <malloc.h>

int gi;
void * address;//这里是一个变量的定义,跟函数没有一点关系

void * buildCode()
{
	//我们要构建的代码如下
	// mov gi, 18
	// jmp address;

	//mov gi, 被赋值整数;指令是10个字节组成C7 05 gi的地址四字节 被赋值整数四字节
	//jmp address;6字节,前两个为ff 25,后4字节为地址
	//因此我们需要分配16个字节
	char * code = (char *)malloc(16);
	char * pMov = code;
	char * pJmp = code + 10;
	char * pAddress;
	//构建mov gi, 18
	pMov[0] = 0xc7;
	pMov[1] = 0x05;
	pAddress = pMov + 2;
	*((int *)pAddress) = (int)&gi;
	*((int *)(pAddress + 4)) = 18;
	//构建jmp address
	pJmp[0] = 0xff;
	pJmp[1] = 0x25;
	*((int *)(&pJmp[2])) = (int)&address;//jmp是跳到address变量中存的地址lb1
	return code;
}

void main()
{	
	void * code = buildCode();//调用buildCode在堆中构建代码
	_asm {
		mov address, offset _lb1;	//现在address全局变量中存的就是_lb1所在的地址
	}
	gi = 12;
	printf("gi = %d\n", gi);
	_asm jmp code;//执行我们自己构建的代码
	gi = 13;
	_lb1:
	printf("gi = %d\n", gi);//打印的结果为18,而不是12
	getchar();
}

1、在堆中分配一块内存,在其中构建相应的代码并执行。其实已经越过了一般的代码机制,在数据段中执行指令

2、_asm中的代码如果只有一条可以不加{ }

3、_asm中的代码可以不加分号。表面上只是一个语法规定,但背后有深刻原因:每条指令的长度都是相同的。每当计算机识别出是那一条指令,读取多长是明确的,不用再适用分号进行区分。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
老码识途是一种能够在ASP.NET读取和处理PDF文件的技术。ASP.NET是一种用于构建Web应用程序的开发框架,而PDF是一种流行的文件格式,用于显示和打印电子文档。 通过老码识途技术,我们可以在ASP.NET应用程序实现以下功能: 1. PDF文件的读取和解析:老码识途技术可以帮助我们读取和解析PDF文件的内容,包括文本、图像、表格等。我们可以提取PDF文件的特定内容,并在网页上显示或进行进一步处理。 2. PDF文件的生成和编辑:除了读取和解析现有的PDF文件,老码识途还可以帮助我们生成新的PDF文件,并在其添加、编辑或删除文本、图像等元素。我们可以根据需求,动态生成包含特定内容的PDF文件。 3. PDF文件的转换和打印:老码识途技术还支持将PDF文件转换为其他格式,如Word、Excel等。此外,我们还可以使用该技术实现PDF文件的打印功能,将PDF文件直接发送到打印机进行打印。 在ASP.NET开发,可以利用老码识途技术实现各种基于PDF文件的功能,如在线阅读、电子签名、报表生成等。同时,老码识途还提供了丰富的API和工具,以简化PDF文件处理的过程,提高开发效率。 总之,老码识途是一种强大的ASP.NET技术,能够帮助我们实现对PDF文件的读取、生成、编辑、转换和打印等功能。它为我们提供了处理PDF文件的灵活性和便利性,为ASP.NET开发带来了更多可能性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值