当前位置: 首页 > news >正文

逆向-还原代码之除法 (Interl 64)

       除法和32位差不多,毕竟背后的数学公式是一样的。区别只是32位的乘法需要两个寄存器来存放大数相乘的结果,而64位的不需要,一个寄存器就能存下。所以在64位的环境下,多了右移32位这条指令,其他指令一样。

//code

#include <stdio.h>

void i_c_c()
{
    int num = 1234;
    int bit = 0;
    
    bit = num / 1000;
    printf("bit = %d %d\n", bit, 1234 % 1000);  // 1 234   
}

int main()
{
    i_c_c();

    return 0;
}

// asm

#include <stdio.h>

void i_c_c()
{
    /*1149:    f3 0f 1e fa              endbr64
    114d:    55                       push   %rbp
    114e:    48 89 e5                 mov    %rsp,%rbp
    1151:    48 83 ec 10              sub    $0x10,%rsp
    1155:    c7 45 f8 d2 04 00 00     movl   $0x4d2,-0x8(%rbp)*/
        int a = 1234;

    /*115c:    c7 45 fc 00 00 00 00     movl   $0x0,-0x4(%rbp)*/
        int b = 0;

    /*1163:    8b 45 f8                 mov    -0x8(%rbp),%eax            // eax = 1234
    1166:    48 63 d0                 movslq %eax,%rdx                // rdx = 1234
    1169:    48 69 d2 d3 4d 62 10     imul   $0x10624dd3,%rdx,%rdx    // rdx = 1234*274877907 =339199337238 = 0x4E F9DB 2316
    1170:    48 c1 ea 20              shr    $0x20,%rdx                // rdx = 0x4E
    1174:    c1 fa 06                 sar    $0x6,%edx                // edx = 1    (2^38)/274877907 = 999.9999 = 1000
    1177:    c1 f8 1f                 sar    $0x1f,%eax                // eax = 0
    117a:    29 c2                    sub    %eax,%edx                // edx = 1
    117c:    89 d0                    mov    %edx,%eax                // edx = 1
    117e:    89 45 fc                 mov    %eax,-0x4(%rbp)*/
        b = a / 1000;

    /*1181:    8b 45 fc                 mov    -0x4(%rbp),%eax            // eax = 1
    1184:    ba ea 00 00 00           mov    $0xea,%edx                // edx = 0xea
    1189:    89 c6                    mov    %eax,%esi
    118b:    48 8d 3d 72 0e 00 00     lea    0xe72(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
    1192:    b8 00 00 00 00           mov    $0x0,%eax
    1197:    e8 b4 fe ff ff           callq  1050 <printf@plt>*/
        printf("%d %d\n", b, 0xea);

    /*119c:    90                       nop
    119d:    c9                       leaveq
    119e:    c3                       retq   */
}

int main()
{
    /*119f:    f3 0f 1e fa              endbr64
    11a3:    55                       push   %rbp
    11a4:    48 89 e5                 mov    %rsp,%rbp
    11a7:    b8 00 00 00 00           mov    $0x0,%eax
    11ac:    e8 98 ff ff ff           callq  1149 <i_c_c>*/
        i_c_c();

    /*11b1:    b8 00 00 00 00           mov    $0x0,%eax
    11b6:    5d                       pop    %rbp
    11b7:    c3                       retq   
    11b8:    0f 1f 84 00 00 00 00     nopl   0x0(%rax,%rax,1)
    11bf:    00 */

    return 0;
}

相关文章:

逆向-还原代码之除法 (Interl 64)

除法和32位差不多&#xff0c;毕竟背后的数学公式是一样的。区别只是32位的乘法需要两个寄存器来存放大数相乘的结果&#xff0c;而64位的不需要&#xff0c;一个寄存器就能存下。所以在64位的环境下&#xff0c;多了右移32位这条指令&#xff0c;其他指令一样。 //code #incl…...

Python WebDriver自动化测试

Webdriver Selenium 是 ThroughtWorks 一个强大的基于浏览器的开源自动化测试工具&#xff0c;它通常用来编写 Web 应用的自动化测试。 Selenium 2&#xff0c;又名 WebDriver&#xff0c;它的主要新功能是集成了 Selenium 1.0 以及 WebDriver​&#xff08;WebDriver 曾经是…...

2023年微信小程序获取手机号授权登录注册详细教程,包含服务端教程

前言 小程序中有很多地方都会用到用户的手机号&#xff0c;比如登陆注册&#xff0c;填写收货地址等等。有了这个组件可以快速获取微信绑定手机号码&#xff0c;无须用户填写。网上大多数教程还是往年的&#xff0c;而微信官方的api已做了修改。本篇文章将使用最新的方法获取手…...

YOLOv8模型学习笔记

在前面的章节中博主学习了YOLOv5的相关知识&#xff0c;从YOLOv5的数据增强处理到模型设计&#xff0c;从正负样本匹配策略到LOSS设计&#xff0c;今天博主学习的是YOLOv8&#xff0c;同为ultralytics公司的产品&#xff0c;两者无论是思想层面还是具体的设计方面都有着异曲同工…...

Java SE知识点1

一、continue、break、和return的区别是什么? 在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要 在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词: 1. continue :指跳出当前的这一次循环,…...

华为OD机试模拟题 用 C++ 实现 - 端口合并(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明端口合并题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明...

C++ Primer Plus 第6版 读书笔记(3) 第3章 处理数据

目录 3.1 简单变量 3.1.1 变量名 *位与字节 3.1.4 无符号类型 3.1.7 C如何确定常量的类型 C是在 C 语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言&#xff0c;是C语言的超集。本书是根据2003年的ISO/ANSI C标准编写的&#xff0c;通过大量短…...

ArrayList源码解读

参数 //默认初始容量private static final int DEFAULT_CAPACITY 10;//空数组(用于空实例)private static final Object[] EMPTY_ELEMENTDATA {};//用于默认大小空实例的共享空数组private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA {};//保存数据的数组tra…...

python实战应用讲解-【语法高级篇】时间与日期(附python示例代码)

目录 保持时间、计划任务和启动程序 time 模块 time.time() 函数 time.sleep() 函数 Python3 日期和时间...

D. Moscow Gorillas(双指针 + 区间分析)

Problem - D - Codeforces 在冬天&#xff0c;莫斯科动物园的居民非常无聊&#xff0c;尤其是大猩猩。你决定娱乐他们&#xff0c;带了一个长度为n的排列p到动物园。长度为n的排列是由n个从1到n的不同整数以任意顺序组成的数组。例如&#xff0c;[2,3,1,5,4]是一个排列&#xf…...

华为OD机试题,用 Java 解【相同数字的积木游戏 1】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

Python实现GWO智能灰狼优化算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景灰狼优化算法(GWO)&#xff0c;由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优…...

无线蓝牙耳机哪个牌子好?2023质量好的无线蓝牙耳机推荐

近几年&#xff0c;随着蓝牙技术的不断进步&#xff0c;使用蓝牙耳机的人也越来越多。蓝牙耳机的出现&#xff0c;不仅能让我们摆脱线带来的约束&#xff0c;还能提升我们学习和工作的效率。最近看到很多人问&#xff0c;无线蓝牙耳机哪个牌子好&#xff1f;下面&#xff0c;我…...

Qt之QTableView自定义排序/过滤(QSortFilterProxyModel实现,含源码+注释)

一、效果示例图 1.1 自定义表格排序示例图 本文过滤条件为行索引取余2等于0时返回true&#xff0c;且从下图中可以看到&#xff0c;奇偶行是各自挨在一起的。 1.2 自定义表格过滤示例图 下图添加两列条件&#xff08;当前数据大于当前列条件才返回true&#xff0c;且多个列…...

电商(强一致性系统)的场景设计

领域拆分&#xff1a;如何合理地拆分系统&#xff1f; 一般来说&#xff0c;强一致性的系统都会牵扯到“锁争抢”等技术点&#xff0c;有较大的性能瓶颈&#xff0c;而电商时常做秒杀活动&#xff0c;这对系统的要求更高。业内在对电商系统做改造时&#xff0c;通常会从三个方面…...

算法与数据结构(一)

一、时间复杂度 一个操作如果和样本的数据量没有关系&#xff0c;每次都是固定时间内完成的操作&#xff0c;叫做常数操作。 时间复杂度为一个算法流程中&#xff0c;常数操作数量的一个指标。常用O(读作big O)来表示。具体来说&#xff0c;这个算法流程中&#xff0c;发生了多…...

【Python】元组如何创建?

嗨害大家好鸭&#xff01;我是小熊猫~ Python 元组 Python 的元组与列表类似&#xff0c; 不同之处在于元组的元素不能修改。 元组使用小括号&#xff0c;列表使用方括号。 元组创建很简单&#xff0c;只需要在括号中添加元素&#xff0c; 并使用逗号隔开即可。 如下实例…...

qt操作文件以及字符串转换

//从文件加载英文属性与中文属性对照表QFile file(":/propertyname.txt");if (file.open(QFile::ReadOnly)) {//QTextStream方法读取速度至少快百分之30#if 0while(!file.atEnd()) {QString line file.readLine();appendName(line);}#elseQTextStream in(&file)…...

数组中只出现一次的两个数字(异或法思路)

题目简介 一个数组中只有2个数字只有一个&#xff0c;其他数字都有两个。找出这两个数字。a, b 用HashMap记录就不说了。 这里记录一下用异或的方式解决。 由于异或特性为自己异或自己为0。a^a 0;所以可以异或数组中的所有数字得出 a^b 的结果&#xff0c;其他相同的都消掉…...

python支持的操作系统有哪些

支持python开发环境的系统有Linux、OSX和windows&#xff0c;以及所有主要的操作系统中。 Linux&#xff0c;Linux系统是为编程而设计的&#xff0c;因此在大多数Linux计算机中&#xff0c;都默认安装了Python。编写和维护Linux的人认为会使用这种系统进行编程。要在Linux中运…...

别再死记硬背了!用Python手把手拆解卡尔曼滤波的‘预测-更新’循环

别再死记硬背了&#xff01;用Python手把手拆解卡尔曼滤波的‘预测-更新’循环 卡尔曼滤波在工程领域就像一位隐形的魔术师——它能从充满噪声的传感器数据中提取出真实信号。但第一次接触那些矩阵方程时&#xff0c;多数人都会陷入"每个字母都认识&#xff0c;连起来完全…...

Sora 2 + After Effects 24.4终极联动教程:含LUT自动映射、运动追踪反哺、动态遮罩同步(附独家.jsx插件)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Sora 2与After Effects 24.4深度整合概览 Adobe After Effects 24.4 正式引入对 OpenAI Sora 2 模型输出格式的原生支持&#xff0c;标志着生成式视频工作流首次在专业后期平台中实现端到端闭环。该整…...

终极指南:如何用sndcpy将Android音频无损转发到电脑

终极指南&#xff1a;如何用sndcpy将Android音频无损转发到电脑 【免费下载链接】sndcpy Android audio forwarding PoC (scrcpy, but for audio) 项目地址: https://gitcode.com/gh_mirrors/sn/sndcpy 你是否曾经想在电脑上收听手机上的音乐、播客或游戏音频&#xff1…...

5分钟精通VinXiangQi:免费AI象棋助手的完整使用教程

5分钟精通VinXiangQi&#xff1a;免费AI象棋助手的完整使用教程 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi VinXiangQi是一款基于YOLOv5深度学习技术的…...

华为OD机试真题 新系统 2026-05-06 JavaGoC语言 实现【匹配命令行前缀关键字】

目录 题目 思路 Code 题目 给定一组命令行字符串和一个命令前缀&#xff0c;需要找出所有以前缀开头的命令行表达式中&#xff0c;前缀之后的第一个关键字&#xff0c;并将这些关键字按字典序排序后返回。 如果找不到匹配前缀则返回空&#xff1b;匹配出多个相同关键字时只返…...

BetterRTX终极指南:三步免费提升Minecraft画质的完整方案

BetterRTX终极指南&#xff1a;三步免费提升Minecraft画质的完整方案 【免费下载链接】BetterRTX-Installer The Powershell Installer for BetterRTX! BetterRTX is a Ray-Tracing mod for Minecraft Bedrock. 项目地址: https://gitcode.com/gh_mirrors/be/BetterRTX-Insta…...

日志收集与分析平台搭建:ELK Stack实战入门

为什么测试工程师需要ELK在软件测试的日常工作中&#xff0c;日志是我们最熟悉也最依赖的“侦探工具”。无论是定位功能缺陷、分析性能瓶颈&#xff0c;还是复现偶发性Bug&#xff0c;测试人员都离不开日志。然而&#xff0c;随着微服务架构、容器化部署和分布式系统的普及&…...

Corvus Robotics推出可在零下仓库中自主盘点库存的新型无人机

物理AI机器人系统提供商Corvus Robotics近日发布了Corvus One冷链版——一款专为在零下20华氏度至常温环境下持续运行而设计的自主库存管理系统。该系统专为抵御极端低温、气流、霜冻和冷凝水而打造&#xff0c;能够在无需人工干预的情况下&#xff0c;对库存进行高频次、高精度…...

可穿戴ESD监测:从被动防护到主动感知的静电管理革命

1. 项目概述&#xff1a;当静电成为“幽灵”&#xff0c;可穿戴监测如何为航空航天制造“显形” 在航空航天和高可靠性电子制造领域&#xff0c;我们常常与一个看不见的“幽灵”作斗争——静电放电。这个“幽灵”无声无息&#xff0c;却能轻易摧毁价值数十万甚至数百万美元的精…...

Ile-Ser-Bradykinin(T-Kinin) ;ISRPPGFSPFR

一、基础信息多肽名称&#xff1a;Ile-Ser-Bradykinin&#xff0c;别名 T-Kinin&#xff08;T - 激肽&#xff09; 三字母序列&#xff1a;Ile-Ser-Arg-Pro-Pro-Gly-Phe-Ser-Pro-Phe-Arg 单字母序列&#xff1a;ISRPPGFSPFR 氨基酸数量&#xff1a;11 aa 结构修饰&#xff1a;线…...