函数调用约定
Calling Conventions For Reverse Engineering
什么是函数调用约定函数调用约定(Calling Convention)是不同的编程语言或系统平台为函数调用所约定的规范。
主要决定了函数调用过程中参数如何传递、返回值如何传递、寄存器如何使用和保护,以及栈帧的管理方式。
prologue
prologue指的是函数开始部分的代码,用于准备函数的执行环境,设置栈空间和保存调用环境
保存ebp:保存调用者的ebp,以便在epilog中可以恢复。
设置栈指针:将栈指针调整为当前函数的栈框架,为局部变量预留空间。
分配栈空间:为函数的局部变量和栈上参数分配所需空间。
push ebpmov ebp, espsub esp, <stack_space>
在这个例子中:
push ebp:将调用者的基址寄存器ebp压入栈,以便在函数返回时恢复。
mov ebp, esp:将栈指针esp复制到基址寄存器ebp,创建一个新的栈帧基址。
sub esp, <stack_space>:从栈指针中减去一段空间,留给函数的局部变量。 ...
ai使用心得
前言/局限性在我初步使用ai的过程中,我个人得出了一些心得:
ai给出的结论不一定是正确的,针对ai回答的内容,需要有一定的鉴别能力
ai给出的回答不一定与预期完全相符,这就需要给ai模板让它模范学习
chatgbt是大语言模型,对专业做题方面能力不足,只能给一些常见的思路
chatgbt的数据库截止到2021年,在该时间节点后的内容chatgbt是没办法知道的
提问ai的时候要用肯定句而非否定句,例如:将回答不要用文段形式改为回答用表格形式
常见ai
国内ai
百度: 文心一言
阿里: 通义ai
字节跳动:豆包
科大讯飞:讯飞星火
……
国外ai
OpenAI:ChatGPT
Google:Bard
Microsoft:Copilo
…..
如何提问在提问ai之前,我强烈推荐你先阅读一下《提问的智慧》 这篇文章,这篇文章涵盖了提问的要领,它的用处不仅仅在ai提问上,更在与人的提问。
[原文链接](How To Ask Questions The Smart Way)
[中文译本](ryanhanwu/How-To-As ...
vim使用笔记——蛋老师视频总结
模式模式分类
正常模式(Normal Mode):用于浏览或是宏观处理文本
打开vim之后,就是正常模式,想要进入编辑模式点击i键
编辑模式(Insert Mode):用于添加或是擅改文字
在此模式下对文本进行编辑,编辑完点击ESC退出编辑模式,返回正常模式
命令模式:用于保存退出或是搜索等
想要退出vim就要到命令模式,命令模式就是可以输入命令来指示是否要保存或是退出等等
视觉模式:
模式的切换i——正常模式进入编辑模式
esc——编辑模式退出到正常模式
:——正常模式进入到命令模式
基础应用编辑
新建
先关闭大写锁定,想打开或是新建一个文件就直接输入vim+文件名即可,例如vim ab.c就会打开文件ab
我们打开一个文件,vim的模式在文件下方是有提示的,例如编辑模式就是INSERT,命令模式是:
2.保存
进入命令模式后,点击q!(小写,quit)即为不保存退出;输入wq(write quit),即为保存并退出
编辑
光标移动到当前行,输入yy(yank),即可复制这一行,
复制一个单词输入yw(yank word)
到需要粘贴行数,输入p(past ...
MarkDown语法笔记
一、标题写法如下,,前有多少个**#**就代表是第几级标题
一级标题#一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题
注意# 后要空一个才是标题
二、段落无序段落写法是在内容前加上 + 或 * 或 - ,三个符号效果一至
+ a//形式一- b//形式二* c//形式三
1
2
有序段落 内容在前面加上**数字和.(英文字符)**即可,例如 1. 2.
段落的嵌套使用可以在有序列表中嵌套新的有序列表,也可以在无序列表中嵌套新的无序列表。使用是在嵌套列表前,按住TAB 或是 空格 即可
三、换行在一行的末尾添加两个或多个空格,然后按回车键,即可换行
1
2
四、引用说明类似标题,在于引用内容前加上 > ,有多少个 > 就表示 几级引用。引用说明区块还可以嵌套使用
>一级>>二级>>>三级>>>>四级>>>>>五级>>>>>>六级
一级引用
二级引用
三级引用
四级引用
...
pwn学习心得
c语言c标准库 c标准库包含了一组头文件,这些头文件提供了许多函数和宏,用于处理输入输出、字符串操作、数学计算、内存管理等常见编程任务。 若要使用C标准语言库中的函数,首先需要包含相应的头文件。例如,如果要调用printf函数,程序中需包含<stdio.h>头文件。
#include <stdio.h>int main (){printf("hello world");return 0;}
c标准库大致分为如下几类 输入输出操作 如<stdio.h> 字符串处理 如<string.h> 数学计算 如<math.h> 内存管理 如<stdlib.h> 时间处理 如<time.h> 所以头文件的功能如下图所示如需更详细了解可去https://www.runoob.com/cprogramming/c-standard-library.html
c语言不安全函数
gets
gets读取用户输入文本,但gets不会检查缓冲区大小,这很有可能导致 ...
用vscode写hexo博客
前言在写md文件之前,建议先学习一下md语法和搭建好写md的语言环境,尤其是关于插入图片这一方面的(这里推荐使用pinpix截图工具)。本文将会帮助你用vscode和相关的插件写md文件,但md语法并不会写在这里,请另外搜寻。
一、vscode的推荐插件 写MD的文件一般推荐使用,但我个人时使用vscode加相关插件。如果你也想使用vscode写md文件,我强力推荐你安装如下插件。 1、Markdown All in One
快捷键
效果
ctrl + b
加粗
ctrl + i
斜体
ctrl + shift + [
下一级标题
ctrl + shift + ]
上一级标题
ctrl + M
不换行数学公式
Alt + S
删除线
是vscode写Markdown语言的必装插件:包含了键盘快捷键,自动预览等等。 2、Markdown Preview Enhanced 点击右上角的的按键,即可预览md文件的效果 预览效果如下
3、Paste Image 作用时,按住CTRL+AL ...
搭建虚拟机
利用VMware来搭建ubuntu的虚拟机,我将在这篇博客记录下载过程以及个人心得。同时,我会将他人详细教程视频放在文末,如有兴趣可自行观看。
一、下载VMware 先是到VMware的官网上下载软件,在安装完成后,点击许可证,输入密钥即可永久使用(自己找)。 随后,出现如下情款说明激活成功。 随后,下载ubuntu的光盘映像文件(我在文末附上的教学视屏有)。下载完后,准备阶段结束,进入下一阶段。
二、自定义设置 进入虚拟机页面,打开文件>>打开新建虚拟机向导,出现如下弹窗,选择第二个自定义选项 下一步中,选择第三个选项 客户机操作系统选择Linux,Version选择ubuntu 64位。 随后依次自定义虚拟机各项属性,按照图片所示一一进行配置
三、网络配置检查和虚拟机设置 在打开虚拟机之前,先检查以太网网络配置,先打开windows的系统,找到网络和internet,打开高级网络设置,找到相关设置下的>更多网络适配器设置。若出现如下弹窗显示已开启,则设置成功. 打开vm,找到左侧的设置,打开 ...
搭建个人博客网站的心得
这篇博客主要是为了记下我在搭建个人博客网站的心路历程与碰上的问题,也算是一个教程。我会在这篇文章简述我遇见的问题和解决办法,希望您在看完这篇博客的时候也有所感受。
一、准备工作 搭建hexo个人博客之前,我们需要下载前置软件git和node.js。 git的官网是 https://git-scm.com/ node.js的官网是 http://nodejs.cn/。 但要注意一下node.js的版本最好下载稳定版。此外,我们还需要一个github的账号,注册好之后开始搭建博客的第一步。
二、创建个人仓库 我们先打开gitthub,如图 随后, 建好后,准备安装git和Node.js,并配置node.js的环境。
三、安装git和node.js 我们首先来安装git,相较于node.js的环境配置而言,安装则更简单。在安装完后,我们按住win+r唤出运行窗口,输入cmd,然后输入以下命令,来检查是否安装成功,如有相应版本信息显示则安装成功。若未能出现版本信息,请重新安装。
下载完后,打开node.js的文件夹,在该目录内新建两个文件夹,node_globa ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
hello my blogQuick StartCreate a new post$ hexo new "My New Post"
More info: Writing
Run server$ hexo server
More info: Server
Generate static files$ hexo generate
More info: Generating
Deploy to remote sites$ hexo deploy
More info: Deployment