c语言裸函数,【逆向知识】裸函数(Naked函数)
1 说明
指定裸函数编写的函数,编译器生成不带任何多余代码。 利用此功能,可以使用内联汇编程序代码编写自己的 prolog/epilog 代码序列。 裸函数对于编写虚拟设备驱动程序特别有用。
2 练习目的
熟悉堆栈结构
参数、局部变量的位置
返回值存储的位置
3 代码实现
// 20180217_裸函数.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
// 两数相加函数
int add(int x, int y)
{
return x+y;
}
// 裸函数实现 两数相加函数
int __declspec(naked) Plus(int x, int y)
{
__asm
{
//保留调用前的栈底
push ebp
// 提升堆栈
mov ebp,esp
sub esp,0x40
// 保留现场
push ebx
push esi
push edi
// 开始填充缓冲区
mov eax,0xCCCCCCCC
mov ecx,0x10
lea edi,dword ptr ds:[ebp-0x40]
rep stosd
// 函数核心功能
mov eax,dword ptr ds:[ebp+0x8]
add eax,dword ptr ds:[ebp+0xC]
// 恢复现场
pop edi
pop esi
pop ebx
//降低堆栈
mov esp,ebp
pop ebp
ret
}
}
int main()
{
// c语言函数实现
add(1, 2);
// 裸函数实现
Plus(1,2);
return 0;
}
c语言裸函数,【逆向知识】裸函数(Naked函数)相关推荐
- sum函数两个同行的元素相加_Excel函数公式大全:利用sum函数进行汇总以及对多个汇总进行求和...
教程领到手,学习不用愁!领 ↑↑↑ 最高效最快速的入门学习方式:看知识兔视频课程,跟着知识兔老师操作,听知识兔老师讲解,初学者不要自己瞎琢磨瞎折腾,很容易走弯路.学以致用,光看不练都是假把式.学完知识 ...
- C++:C++语言入门级基础知识考察点回顾之函数、结构体和类
C++:C++语言入门级基础知识考察点回顾之函数.结构体和类 目录 C++的函数 1.函数的定义.调用,全局变量局部变量 1.1.自定义函数求其倒数
- 你是真的“C”——详解C语言函数模块知识(上篇)
详解C语言函数模块知识(上篇)
- 【C语言】函数基本知识详细讲解(库函数、自定义函数、参数、函数的套用.....
接着上次的数组的基本知识,让我们来简单了解C语言里的函数. 目录 函数的定义 库函数 自定义函数 函数的参数 函数的调用: 函数的嵌套调用和链式访问 函数的声明和定义 函数递归. 总结 函数的定义 ...
- 破开C语言暗夜的第四道光(1)—— 函数基础知识
函数基础知识 一.C语言中函数的分类 - 库函数 - 自定义函数 二.函数的声明与定义 - 函数的声明 - 函数的定义 三.函数的参数 - 实际参数(实参) - 形式参数(形参) 四.函数的调用 - ...
- SHELL/SSH基础知识(入门篇)-包含 shell 脚本语言的基本用法、 shell 脚本语言的基本用法、流程控制、函数 function、其它脚本相关工具、数组 array(欢迎留言交流)
目录 1 shell 脚本语言的基本用法 1.1 shell 脚本注释规范 1.1.1 shell 脚本注释规范 1.1.2 执行(5种) 1.1.3 在远程主机运行本地脚本 1.1.4 检查shel ...
- c语言实现股票软件cost函数,麻烦编一个股票软件中WINNER,COST的函数-MC知识 -程序化交易(CXH99.COM)...
MC回复讨论二: cost和winner两个函数见如下代码: //winner input: pricevalue(numericsimple); var: var_down(0), var_tota ...
- C语言试题三十二之编写函数function,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。
1. 题目 请编写函数function,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数). 2 .温馨提示 C试题汇总里可用于计算机二级C语言笔试.机试.研究生复 ...
- lisp语言100以内勾股数_三个视频搞定:函数的最值、对勾函数、分式函数性质与图像、分段函数最值...
● 本文适合高一上学期.高三一轮复习的同学阅读.先看视频再看文字,看视频时注意利用暂停,想清楚每一步变形的依据. 01 函数的最值.对勾函数的性质 视频讲解 1.函数的最大(小)值 说明: (1)最大 ...
- python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...
原标题:新手上路必学的Python函数基础知识,全在这里了(多段代码举例) 导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写 ...
最新文章
- 阿里云系列——7.阿里云IIS系列详解(过程+通用+最新)
- 成功解决TypeError: a bytes-like object is required, not 'str'
- 使用setfacl实现子目录继承父目录权 限
- Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?...
- Laravel神奇的服务容器
- 公网ip和私网ip的区别_自带公网IP上阿里云
- 获取某一天前七天的数据(不包括某一天)
- 开奖及送书|《漫画算法:小灰的算法之旅(Python篇)》
- Codeforces 932D - Tree
- Atitit 传感器之道 1. 视觉传感器 摄像头	1 1.1. 一、光线传感器:	1 1.2. 二、距离传感器:	1 1.3. 第一种是震动传感器。	4 1.4. 第二种是声响传感
- 怎样修改用户的计算机配置文件,用户配置文件
- OPC:服务器开发(一)如何开发OPC Server
- linux 目录权限上下文,谢烟客---------Linux之文件安全上下文及特殊权限位
- Apple Developer会员注册以及续订“支付授权失败...”问题
- vue -V 执行失败 檔案名稱、目錄名稱或磁碟區標籤語法錯誤。
- 论文阅读:SO-Net: Self-Organizing Network for Point Cloud Analysis
- GLES2.0中文API-glGetUniformLocation
- 模拟器计算机内存不足,模拟器内存不足要怎么办_怎样修改模拟器的内存大小 - 驱动管家...
- PAT甲级 1131 - Subway Map
- 主动信息获取模式下PLC性能的影响因素分析
热门文章
- C语言-printf打印的用法
- Pandas Dataframe 每隔n行取1行
- 集合中篇—栈与队列区块链
- 用python爬取豆瓣影评及影片信息(评论时间、用户ID、评论内容)
- 前端开发需要会什么?先掌握这三大核心关键技术
- How to customize the UI in IBM ITIM Solution
- 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) H.了断局-递推
- Tomcat启动时,日志的中文乱码【淇℃伅】和【璀﹀憡】等
- Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)
- 2011~至今 百度指数采集方法与工具、支持百度指数、资讯指数、媒体指数