首页 > TAG信息列表 > EAX

变量的定义声明以及变量在函数中的使用

一、变量的定义和初始化 1 TITLE AddandSubtract,Version2 (AddSub2r.asm) 2 ; This program adds and subtracts 32-bit integers 3 ; and stores the sum in a variable. (From page 94.) 4 ; Lastupdate:

Linux0.11 move_to_user_mode分析

/* * IRET * 当使用IRET指令返回到相同保护级别的任务时,也就是当前的CS中的DPL和堆栈中的DPL相同时 * IRET会从堆栈弹出代码段选择子及指令指针分别到CS与IP寄存器, * 并弹出标志寄存器内容到EFLAGS寄存器。 * * 当使用IRET指令返回到一个不同的保护级别时,也就是当前的CS中

关于应用程序头部信息

在launcher.asm的应用程序中,可以看到头部信息如下:   use32     org 0x0     db 'MENUET01' ; 8 byte id     dd 0x01 ; header version     dd START ; start of code     dd I_END

编写X86的ShellCode

ShellCode 定义 ShellCode是不依赖环境,放到任何地方都能够执行的机器码 编写ShellCode的方式有两种,分别是用编程语言编写或者用ShellCode生成器自动生成 ShellCode生成器生成的shellcode功能比较单一,常见的ShellCode生成器有shell storm、Msfvenom等 而用编程语言写的shellcode会

X86汇编层面的方法调用。

本文主要描述了X64下的汇编层面的方法调用。具体来说就是一个C语言的方法被另外一个方法调用,是如果在汇编语言X64的规范中实现的。 1.假设有如下C语言文件 "test.c" 点击查看代码 int sumNine(int one, int two, int three, int four, int five, int six, int seven,

linux-0.11分析:boot文件 head.s 第三篇随笔

head.s 参考 [github这个博主的][ https://github.com/sunym1993/flash-linux0.11-talk ] 改变栈顶位置 _pg_dir: startup_32: movl $0x10,%eax mov %ax,%ds mov %ax,%es mov %ax,%fs mov %ax,%gs lss _stack_start,%esp 先是分别ds,es,fs,gs的值都置成了0x10 然后这段·lss

LyScript 插件命令返回封装

LyScript 自动化插件增加命令行回传参数的封装,由于x64dbg开发文档中提供的命令执行功能无法实现参数回传,导致LyScript插件无法得到内置命令执行后的返回参数,故本人想了一段时间,找到了这个解决方案。 LyScript插件文档:https://github.com/lyshark/LyScript 其实我们完全可以通过一

【逆向学习】逆向学习笔记(一)

脏字 污染逆向软件分析结果的字节。 常见的脏字 0x8e(call) 0xbe 重要的寄存器 寄存器名 用途 eax 返回值 重要的工具 Z3 IDA

《CTF权威指南(pwn)》学习笔记

第一章 知名安全会议 RSA、Black Hat、DEFCON、ISC(中国互联网安全大会) 学术顶会 CCS(A): ACM Conference on Computer and Communications Security NDSS(B): Network and Distributed System Security Symposium Oakland S&P(A): IEEE Symposium on Security & Pri

内联汇编的使用,函数返回值的外部调用

#include "windows.h" #include "stdio.h" _declspec(naked) void Fun() { _asm { push ebp; mov ebp ,esp; sub esp ,0x40; push esi; push edi; push ecx; mov eax,0xcccccccc;

反汇编代码中的优化方式

反汇编代码中的优化方式 一优化方式 优化方式分类 汇编中的加法、减法、乘法、除法 、 取模等等 都是优化方式。 优化方式的分类 常量折叠 常量传播 变量去除 归并优化 Cpu流水线优化 数学变换 不可达分支优化 代码外提优化 优化前提是在Release下且开启o2选项化速度的前提Debug

汇编学习笔记

  dispmsg eax=要输出字符串地址 dispc al=要输出字符 dispcrlf 换行 disphd 以16进制输出8位 dispuid 输出无符号十进制数 dispsid 输出有符号十进制数 readmsg 入口:eax=字符串地址 出口:eax=字符数量 readc al=读入的字符 readhd eax=读入的8位十六进制数

C# 植物大战僵尸逆向之---Hook技术实现僵尸快速进攻的效果 (五)

C# 植物大战僵尸逆向之---Hook技术实现僵尸快速进攻的效果 (五)   本章说明:   当然要实现僵尸快速进攻的效果有很几种实现方式,我们本章用Hook来实现该功能。   利用Hook技术,可以不用找到僵尸进攻倒计时的基址,直接修改到僵尸出现倒计时的数据,从而达到僵尸快速进攻的效果。  

C#语法糖系列 —— 第一篇:聊聊 params 参数底层玩法

首先说说为什么要写这个系列,大概有两点原因。 这种文章阅读量确实高... 对 IL 和 汇编代码 的学习巩固 所以就决定写一下这个系列,如果大家能从中有所收获,那就更好啦! 一:params 应用层玩法 首先上一段 测试代码。 class Program { static void Main(string[] ar

放弃所谓“右移优化除法”行为

The Difference between Division and Arithmetic Right Shifting in C 你是否有听说过有符号数不能使用右移操作(>>)来代替除法? 这篇短文会向你证明它,并尝试向你解释为什么。当然,如果你没有听说过,那么从现在开始,记住它! Foundation: Logical Shift .vs. Arithmetic Shift 若你现在

一次int转换成unsigned long数值溢出问题

在项目中遇到一个奇怪的宕机问题,后来查询定位发现是erlang底层数据溢出问题,用c模拟情况类似,当一个int类型的x值大于等于1<<25的时候,再左移6位会造成nt溢出,然后再强转成64位无符号整数。 test_int.c #include <stdio.h> int main(){ int a = 1; int x = (a<<25); int

WindowsPE权威指南学习过程中的代码片段

第一个基础的HelloWorld .386 .model flat,stdcall option casemap:none include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib .data szText db 'HelloWorld',0 .code start: invoke MessageBox,NULL,o

微信机器人之PC微信hook

想实现微信机器人软件的主要构成分为一个主进程exe和一个注入的dll,主进程exe:把dll注入到微信,发送指令给dll,接受dll的信息,注入的dll:被注入到微信内部,拦截微信的数据,调用微信的功能接收主进程的指令,执行指令对应的操作、发信息给主进程,通过这样的操作,就能实现获取信息和发送信息的最

你管这叫操作系统源码(三)

文章目录 重新设置idt和gdtIntel内存管理:分段与分页进入main前的最后一跃资料 重新设置idt和gdt 正式进入 c 语言写的 main.c 之前的 head.s 究竟写了点啥?head.s 文件很短: _pg_dir: _startup_32: mov eax,0x10 mov ds,ax mov es,ax mov fs,ax mov gs

计算机系统-汇编基础

一.寄存器&数据传送mov指令 1.80386通用寄存器         16位:AX,BX,CX,DX;SI,DI;SP,BP;         8位:AH,AL;BH,BL;CH,CL;DH,DL         32位:EAX,EBX,ECX,EDX;ESI,EDI;ESP,EBP         段寄存器:DS,ES,SS等 2.AT&T汇编代码         格式:指令 源

数组和指针的区别

// test.c void test() { char array[4] = {0}; *(array + 0) = 0x00; array[1] = 0x11; *(array + 2) = 0x22; array[3] = 0x33; char *pointer = array; pointer[0] = 0x00; pointer[1] = 0x11; pointer[2] = 0x22; pointer[3] = 0

反汇编分析C语言

环境 VC6.0环境 空函数反汇编 #include "stdafx.h" void function(){ } int main(int argc, char* argv[]) { function(); printf("Hello World!\n"); return 0; } 我们通过反汇编来分析这段空函数 ###函数外部 10: function(); 00401068 call @ILT+5(functi

APC 篇—— APC 执行

写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图。由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信

句柄表篇——总结与提升

写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图。由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信

day01.2-初识汇编

一、逻辑运算 逻辑运算:与(and)、或(or)、亦或(xor)、非(not) 计算机除了数据,还要做运算,二进制之间会进行逻辑运算,计算机不会加减乘除,这些运算计算机都是通过移位或者通过逻辑运算实现的。因为计算机只认识二进制数,所以所有的加减等运算都是通过CPU对二进制数据做逻辑运算实现的 比