王爽汇编语言综合研究-不用main函数编程

由cve-2019-9766引出的缓冲区漏洞学习 通过工程实践引出的缓冲区溢出,缓冲区溢出 缓冲区攻击的最终目的就是希望系统能执行这块可读写内存中已经被蓄意设定好的恶意代码。 1、栈的结构 1、先进后出。 2、在内存中表现为从高地址往低地址增长。 3、栈顶:栈的最上方(低地址区)。 4、栈低:栈的最下方(高地址区)。 基本的进程地址空间分布: 2、基本栈溢出: 缓冲区溢出示意图: 如果在数据段(右边的data)就保存了一系列的指令的二进制代码... 阅读详情

这一部分继续深入研究用汇编解释c的原理,尝试不用main()函数编写可以正确运行的程序

1、首先编写一个简单的程序

f()
{
	*(char far *)(0xb8000000+160*10+80) = 'a';
	*(char far *)(0xb8000000+160*10+81) = 2;
}

在TC中编译,连接这个程序。出现了一个连接错误

Snap16

Linker Error:Undefined symbol ‘_main’in module C0S(未定义的符号_main在模块C0S中)

这句话说明,c语言的入口函数main函数是被C0S.obj所调用。

现在我们用汇编语言所使用的连接器Link.exe来连接c语言编译后的.obj文件得到一个.exe文件,用debug调试这个.exe文件

Snap17

从反编译后的指令看到,偏移地址为0开始的程序就是我们编写的程序。在资源管理器中看到,这个文件只有541个字节。但是执行后不能正确返回

2、正常的程序

下面编写一个正常的程序

main()
{
	*(
[汇编与C] main 函数和启动例程 为什么汇编程序的入口是_start,而C程序的入口是main函数呢?现在我们来解释这个问题。Linux 中汇编和链接步骤是: [test@localhost Assembler]$ as test.s -o test.o [test@localhost Assembler]$ ld test.o -o test 以前我们常用gcc main.c -o main命令编译一个程序,其实也可以分三步做... 阅读详情

相关推荐

Python和Spyder:一个完美的编程组合

而Spyder作为一个专门为科学计算和数据分析而设计的IDE,提供了高效的开发环境和丰富的工具。无论是初学者还是专业开发者,Python和Spyder都能满足他们的需求,并为他们的工作带来便利和效率。本文将探讨Python和Spyder之间的关系,以及它们如何相互配合,提供一流的编程体验。每个工具都有其特定的优势和适用场景,开发者可以根据自己的需求选择合适的工具。而Spyder作为一个专门为科学计算而设计的IDE,提供了编写、调试和执行Python代码的环境。

CodeHeroicX的博客 1089

汇编语言 综合研究

通过研究函数如何接受不定量的参数,实现一个简单的printf函数,只需要支持“%c、%d”即可。

深度剖析XY2-100与SL2-100协议:解锁激光打标核心技术密码

XY2-100和SL2-100是激光打标领域的两种核心控制协议。XY2-100协议采用串行通信,指令集简单,适合常规打标任务,具有成本优势;SL2-100协议支持更高速率(1Mbps以上),具备曲线插补等高级指令,在精密加工领域表现突出。两者的主要差异体现在数据传输(帧结构、速率)、指令集(功能、数量)、参数调节(范围、精度)和错误处理机制等方面。实际应用中,XY2-100适合简单图形的大批量生产,SL2-100更胜任复杂曲面的高精度加工。选择时需综合考虑打标需求、设备兼容性和成本因素,未来两种协议将持续优

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 894

-汇编语言-综合研究-不使用main函数编程

(一) 研究目的 使用C语言编程,我们一定要使用main函数么? (二) 研究过程 1) 最初的程序 首先,我们编写一个不写main函数的C语言程序。 程序如下: 在编译的过程中,没有发现错误。在链接的过程中发现出现的错误如下: 链接时出现Undefined symbol ‘_main’ in module c0s 这样的错误信息,可能main函数与c0s.obj这个文件有...

weixin_30332705的博客 405

一个宏定义引发的问题

问题1:对与buffer宏定义的理解 一些得到的基本结论:int型数据占有一个字的空间,char型数据占有一个字节的空间,并且char数据类型的定义是为ASCII字符表量身定制的 对与buffer的理解: #define buffer ((char*) * (int far*)0x200) 首先,复习对与基本宏定义的知识:对于# define pi (3.14)即pi = 3.1...

weixin_30564901的博客 226

Fortran极快速入门

      所谓极快速,当然就不是针对初学者。这个小教程是针对有一些其它语言基础,至少不用解释什么变量之类的童鞋用的语法速查。所以如果你原来什么都不会,那还是好好找本教科书从头开始学吧。      内容:命名规则程序结构内建类型及常量、变量声明数组结构函数与例程模块输入、输出指针 1、命名规则      所有的Fortran名字,包括常量名、

893

C语言main函数研究,以及对代码断点调试的研究老师 汇编语言

我们知道作为一个语言本身是不会有诸如从main函数开始运行这样的条件(深层次的说 底层汇编代码不会指定从mian函数开始的这样的条件,程序开始的位置是初始 CS:IP指定的位置)   1、通过书本上给我们提供的信息,我们知道在tc2.0中,给我们提供了寄存器名来给寄存器存储数据,       编写成如下:             我们知道在C语言main函数是必定要被执行的,故,

/*李大叔*/ 的专栏 1万+

汇编语言综合研究——使用寄存器

汇编语言综合研究 使用寄存器 1、使用寄存器编程main函数是c语言编写程序的入口函数,但是main中的第一条语句并不是程序中被执行的第一条指令,还有很多其它语句。为了研究我们的程序编译后的语句,首先要找main函数的位置,可以通过下边的程序获得main函数的偏移地址       Main()       {              Printf(“%x/n”,mai

一个程序员的成长历程 2364

-汇编语言-综合研究-使用寄存器

(一) 研究概述 我们为什么必须使用变量?因为我们在编程时必须存储数据。那么如果可以使用别的方法存储数据,我们就可以不必因此目的而使用变量。 用什么方法来存储数据呢?在学习汇编语言是。我们把数据存储在寄存器和内存空间中。那么,在本次试验中,我们研究的是C语言中如何使用寄存器。 (二) 研究过程 (1) 编写一个程序url.c 编译链接完成,用debug加载。 -u查看如下: ...

weixin_30265171的博客 219

汇编语言综合研究-函数如何接收不定数量的参数

1、c语言如何传递参数 编写这样一个程序试验 void showchar(char a,int b); main() { showchar('a',2); } void showchar(char a,int b) { *(char far *)(0xb8000000 + 160*10 + 80) = a; *(char far *)(0xb8000000 + 160*10

ll2323001的专栏 7322

关于C的研究试验123--汇编语言)》

搭建一个精简的C语言开发环境 (1)在D盘下建立新的文件夹,名为minic (2)将minic设为dos下的E盘 (3)拷贝tc2.0下的tc.exe到minic下 (4)运行tc.exe,tc–>Options–>Directories,清空所有路径,然后用“Save option”保存设置 编辑一个简单的simple.c程序,Compile–>Compile to OBJ,进行编译,然后Compile–>Link EXE file,进行连接,不成功,缺少C0S.OBJ、CS.LI

asdfgkkkll的博客 397

汇编语言_探索C语言main函数的入口地址

探索C语言main()函数的入口地址,首先要编译连接。 在xp系统中,如下操作: ** 按f3,test.c文件的路径,将test.c中的源代码读入到tc.exe中; 接着,按下f10,将option中的directory全部删掉,如下图所示; 进入链接阶段:在compile中,选择link exe开始链接,如下图所示,这一步需要很多.obj文件,放入相同的路径下。 最后成功生成test.exe文件 编译一个程序需要前人写好的很多文件,如下图所示,最终才能生成.exe文件。 现在,寻找Main

weixin_43916755的博客 3149

main函数汇编代码

本文主要对main函数编译后生成的汇编码进行观察,为了简单起见,main函数的内容为空。(注:以下部分内容来自于新浪博客) 实验方法如下:首先在不同环境下编译源代码,收集生成的可执行文件;随后将可执行文件使用IDA Pro(版本为5.5,这里赞一下强大的IDA!)进行反汇编;最后观察main函数汇编码(所有汇编码格式都是Intel风格的),进行分析与比较。 本文重点在于讨论一些最基本的概念,

6343

Fortran 报错 error LNK2005: _MAIN

报错截图: 原因是:一个项目里面只能有一个主程序,任意去掉一个.90文件就好了 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200907160139565.png#pic_center 【新手求助】error:LNK2005:_MAIN_already defined in xxxx ...

天外来客的花田 1232

汇编研究实验-不用main函数编程

程序f.c  对其进行编译 连接,思考相关的问题①编译和连接哪个环境会出问题。    连接过程。②显示出的错误信息是什么?    ③这个错误信息可能和哪个文件相关?C0S.OBJ (2)用学习汇编语言时使用的LINK.EXE对TC.EXE生成的F.OBJ文件进行连接,生成F.EXE。用DEBUG加载F.EXE,查看成个程序的汇编代码。思考

rot1217的专栏 738

使用说明书 Pentax-K5 -中文使用手册

使用说明书 Pentax-K5- 中文使用手册

上一篇: 王爽汇编语言综合研究-使用内存空间
下一篇: 王爽汇编语言综合研究-函数如何接收不定数量的参数
lingdushanke
博客等级 码龄18年 48粉丝 35原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值