1、MOV指令        把一个数移动到目标寄存器格式:MOV  条件   s条件: 就表示mov指令是否要执行,如果满足条件就执行movs:  是否影响cpsr的值注:寄存器存储得数据,可以是一个常数,也可以是一个数经过左移右移得到的数据。  &nbsp
目录一、Lua语言简介二、Lua架构图三、Lua源码结构很久很久没有写博客了,一直忙于工作和项目,最近依然想静下来阅读一些好的源码。自从读完了Nginx和Memcache的源码后,对服务器端的基础开源软件的实现原理有了一定的认识,接下来想看看Lua这门精巧的语言是如何实现的。一、Lua语言简介Lua是一门用C语言编写的脚本语言,一共1w多行代码,非常的轻巧,适合做web脚本、游戏脚本、物联网等场景
转载 2024-02-21 21:33:12
58阅读
常用的汇编指令:   1、相对跳转指令:b、b1     这两条指令的不同之处在于bl指令除了跳转之外,还将返回地址(bl的下一条指令的地址)保存在lr寄存器中。都是位置无关指令。   2、数据传送指令mov,地址读取伪指令ldr     mov指令可以把一个寄存器的值赋给另一个寄存器,或者把一个常数赋给寄存器,mov指令传送的常数必须能
转载 2024-07-09 13:32:22
56阅读
探索汇编语言的新篇章:ASMREPL asmreplA REPL for x86-64 assembly language项目地址:https://gitcode.com/gh_mirrors/as/asmrepl ASMREPL 是一个为汇编语言爱好者量身打造的交互式命令行工具,让你可以在实时环境中编写、执行和调试汇编指令。无需复杂的设置过程,只需一条简单的命令,即可开启你的汇编旅程。项目技术分
软件:emu8086语言:汇编语言(Assembly)注意:本文列出了十六进制转二进制、十进制、ASCII码及大小写字母转换的代码,全部代码为博主独自一人编写,会有瑕疵,谨慎使用。1.十六进制转换为二进制数设计1.1设计要求:设计转换程序,将键盘键入的四位十六进制数据转换为等值的二进制数,并在终端显示。要求:完善程序结构,设置程序错误出口。输入的不是0-F间的值,显示错误提示信息,并要求重新输入。
    每一种语言都有一些字符串操作函数,反汇编后的代码也不例外。网上讲的都比较零碎,我将它们收集起来,并配上自己的理解,形成本文。 一、字节操作指令:lodsb和stosb1. lodsd需要寄存器esi配合使用。每执行一次lodsb,就将[esi]中的一个字节复制到al寄存器中。    即:lodsd == [es
在csapp中的新理解: (1)栈向下增长,栈顶元素的地址是所有栈中元素地址中最低的(2)因为栈和程序代码以及其他形式的程序数据都是放在同一内存中,所以程序可以用标准内存寻址方法访问栈内的任意位置(3)加载有效地址(load effective address)指令leap实际上是movq指令的变形,它的指令形式是从内存读数据到寄存器,但实际上它根本就没有引用内存。  &nbs
转载 2024-03-22 20:33:33
68阅读
汇编分类  汇编语言种类大致可以分为:8086汇编(16bit)、x86汇编(32bit)、x64汇编(64bit)以及嵌入式汇编等。根据书写格式的不同可将汇编分为:Intel汇编和AT&T汇编。GCC编译器中默认使用的是AT&T汇编,两种格式的差异如下: 寻址方式的差异如下:寄存器  寄存器是cpu中的数据存储区域,cpu会先将内存中的数据存储到寄存器,再对寄存器中的数据进行运算
先上代码: test.S如下 @压栈操作 mov ip, sp sub sp, sp, #12 str lr, [sp] @str r14, [sp] str ip, [sp, #4] @ str r12, [sp, #4] str fp, [sp, #8] @ str r11. [ip, #8] sub fp, ip, #4 @函数调用
W32Dasm是一个强大的反汇编工具,操作简单,使用方便。通常被程序员使用,当然也可被用来Crack软件了,很适合Cracker使用。我在这把与crack相关的功能简述如下: 1.0 开始 2.0 保存反汇编文本文件和创建方案文件 3.0 反汇编文本代码的基本操作 4.0 复制汇编代码文本 5.0 装载32位的汇编代码动态调试 6.0 运行,暂停或终止程序 7.0 单步跟踪程序 8.0 设置激
下载dosbox  官网:https://www.dosbox.com/  这里是最新版本的链接地址.   根据操作系统,选择对应版本的dosbox. dosbox 命令:  mount d d:\    该命令是dosbox的指令,用来把自己d盘挂载到dosbox的d盘 在D盘建立了一个文件夹masm,作为汇编文件存放位置;使用mount d d:\masm命令后...
1, 将机器码转换成汇编: pip install capstone brew install capstone 2,汇编代码转换成机器码: 软件下载地址: https://www.cr173.com/soft/784200.html
原创 2021-07-30 11:41:52
582阅读
               C++反汇编第二讲,不同作用域下的构造和析构的识别目录大纲:  1.全局(静态)对象的识别,(全局静态全局一样的,都是编译期间检查,所以当做全局对象看即可.)    1.1 探究本质,理解构造和析构的生成,以及调用方式(重要,如果不想知道,可以看总结.)  2.对象做函数参数的识别   3.返回值为对象的识别  4.对象为静态局部的识别  5.堆中对象识别    &n
Linux的操作系统一直以来备受程序员和开发者的喜爱,其开放源代码、稳定性和安全性备受推崇。在Linux系统中,汇编语言的应用也是不可或缺的一部分。而在Linux中,汇编语言的编写通常使用的是汇编工具。 其中,最为知名的汇编工具之一便是红帽公司推出的NASM(Netwide Assembler)。NASM是一种用于Intel x86和AMD64(x86-64)架构的汇编语言的汇编器。它的主要目标
原创 2024-03-06 13:48:43
125阅读
一、前言 为了弄清楚**缓冲区溢出攻击**,先花大篇幅讲清楚main函数的反汇编代码是有必要的(见二、main函数的反汇编代码解析)。 二、main函数的反汇编代码解析 1.main函数的源代码 2.main函数的反汇编代码 (1)前三行 ①lea 0x4(%esp),%ecx解析: 1)实现的功能:esp寄存器中的值(存的是地址,指向的是栈顶)+4,存入寄存器ecx。 程序计数器(pc) : 0
寄存器段寄存器代码段寄存器CS(Code Segment) 存放当前正在运行的程序代码所在段的段基址,表示当前使用的指令代码可以从该段寄存器指定的存储器段中取得,相应的偏移量则由IP提供。 数据段寄存器DS(Data Segment) 指出当前程序使用的数据所存放段的最低地址,即存放数据段的段基址。 堆栈段寄存器SS(Stack Segment) 指出当前堆栈的底部地址,即存放堆栈段的段基址。 附
算术运算符加法:Add ax, bx     ;bx+ax => ax   加法运算 带进位加法指令 adc 32位加法Mov  ax , 0fffh 假设第一个数低位Mov  dx, 0 假设第一个数高位 0ffffhMov bx, 1 假设第二个数低位Mov cx, 0 假设第二个数高位Add ax
0、前言想要执行gcc - g wk9_20191314.c -o 9week -m32命令时显示找不到必要文件说明缺少库函数,使用如下命令安装库函数:sudo apt-get install libc6-dev-i386用到的指令b main:设置行断点,在main函数处设置断点 i r:查看当前寄存器的值 disassemble:反汇编当前的函数机器码 si:汇编命令,下一步 display
转载 2023-06-08 10:56:56
158阅读
Why Lua---------------------------------------------一个功能强大,快速,轻量级,可嵌入的脚本语言。程序语法构造简单,用关键数组来实现强大的数据描述功能,同时还提供一些可扩展的语义特征动态类型,无需编译,由解释器先翻译成lua虚拟机的指令, 然后在虚拟机(基于寄存器实现)上运行.使用一个采用增量策略的GC来管理内存1、Fast, 最快的脚本语言,l
原创 2014-08-12 22:16:28
3606阅读
javap       javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。        当然这些信息中,有些信息(如本地变量表、指令和
转载 2023-06-07 12:57:12
269阅读
  • 1
  • 2
  • 3
  • 4
  • 5