一直到今天才找到滴水的逆向练习

arg_0= dword ptr  8
arg_4= dword ptr  0Chpush    ebp             //保存当前执行函数栈栈底
mov     ebp, esp        //平栈,将当前函数栈顶赋给栈底,相当于开辟新空间执行下面的代码
push    ebx
push    edi             //使用中的寄存器压栈,当前函数执行完之后需要将两个寄存器中原先的值弹回寄存器mov     eax, [ebp+arg_0]
mov     edi, [ebp+arg_4]
mov     [edi], eax
cpuid
mov     [edi+4], eax
mov     [edi+8], ebx
mov     [edi+0Ch], ecx
mov     [edi+10h], edxpop     edi
pop     ebx              //弹回原先寄存器
leave
retn    8

重点分析中间代码

mov     eax, [ebp+arg_0]
mov     edi, [ebp+arg_4]            //只能分析出将栈空间中两个值存入寄存器,具体这两个值是什么未知
mov     [edi], eax                  //将存入eax中的值存入edi中存的地址值,由此得出[ebp+arg_4]中存的是个指针变量
cpuid                                //百度查了半天才知道,cpuid是获取cpu的信息,返回值会存在下面四个寄存器中
mov     [edi+4], eax
mov     [edi+8], ebx
mov     [edi+0Ch], ecx
mov     [edi+10h], edx                //将四个寄存器中的值依次存入edi存放的地址位置

由此大概可以推断出,该函数的功能应该是获取CPU信息

问题:最后的leave指令是否将压栈的原函数栈底弹回来了???

为什么中间要将存入eax中的值存入edi中存放的地址???

逆向练习001——获取CPU信息相关推荐

  1. linux多cpu运行python脚本,linux系统使用python获取cpu信息脚本分享

    linux系统使用python获取cpu信息脚本分享 代码如下: #!/usr/bin/env Python from __future__ import print_function from co ...

  2. C++获取CPU信息应用经验分享

    //汇编语言倒是自己写过CPUID的指令获取一些CPU信息的东西. C++编程语言的应用范围非常广泛,而且其实用方法灵活,可以帮助我们轻松的实现各种需求.在这篇文章中,我们将会为大家介绍C++获取CP ...

  3. android手机获取cpu信息

    前言 获取android手机的设备信息,首先要从android手机系统的所基于的linux的入手. 通过调试桥获取cpu信息 当然使用linux桌面的用户通过命令:cat /proc/cpuinfo ...

  4. 通过读取/proc/cpuinfo获取CPU信息

    1.简介 上一篇介绍了如何通过cpuid指令获取CPU信息,本文主要介绍如何通过读取/proc/cpuinfo文件获取CPU信息.本文从"什么是/proc文件系统","如 ...

  5. linux cpuid指令,通过CPUID指令获取CPU信息

    1.简介 在计算机领域中需要用到CPU信息的地方有很多.比如,在可信计算中,需要收集终端的软硬件的完整性信息,其中就包含CPU的信息:再比如,一些加密软件需要绑定CPU的某些信息,去生成加密密钥.本文 ...

  6. Intel x86_64使用cpuid指令获取CPU信息

    文章目录 前言 一.cpuid指令简介 1.1 cpuid指令功能 1.2 cpuid指令代码 二.获取处理器信息 2.1 输入参数为0H 2.2 输入参数为01H 2.3 输入参数为0x800000 ...

  7. arm linux读cpu id,基于ARM架构的芯片获取CPU信息(cpuID)的多种方法

    由于工作的原因,要获取到ARM芯片的cpuid. 了解下存储cpu信息的寄存器内容: CPUID寄存器内容: 字段名:Implementer(venter 销售ID)|Variant(大版本号) | ...

  8. Android获取CPU信息(CPU名字和主频)

    文章参照自:http://www.2cto.com/kf/201206/134236.html 在 Android 中,我们可以通过读取一些系统文件来获得手机的 cpu信息 (CPU 名字 和CPU ...

  9. linux内核获取cpu,如何在Linux上使用C获取CPU信息,例如内核数量?

    从男人5 proc: 06000 下面是示例代码,它将信息读取并打印到控制台,stolen from forums – 它实际上只是一个专门的cat命令. #define _GNU_SOURCE #i ...

最新文章

  1. Bimsight视图及导航控制
  2. linux 上安装ntop
  3. 计算机高职考理论知识,考计算机基础知识理论试题
  4. [JavaWeb-MySQL]多表查询(内连接,外连接,子查询)
  5. java/javascript 时间操作工具类
  6. Qt文档阅读笔记-构造WebSocket服务端
  7. OpenVSLAM:日本先进工业科技研究所新开源视觉SLAM框架
  8. java调用solr的分词查询结果
  9. 我想说进厂打工怎么就丢人了
  10. chromium之message_pump_win之二
  11. HDU 5608 function(莫比乌斯反演 + 杜教筛)题解
  12. springboot 线程池和数据库链接池配置以及多线程效率实测
  13. 【转载】C++操作符的优先级
  14. Flash 短片轻松学
  15. 计算机屏幕背景设置方法,高清电脑桌面壁纸如何设置,教您设置系统主题美化方法...
  16. Java 实现十进制数转换为二进制
  17. 微信公众号都有哪些传播方式吸引粉丝
  18. “将‘const NSString *‘发送到‘NSString *‘类型的参数会丢弃限定符”警告
  19. 求知若飢,虛心若愚 Stay Hungry, Stay Foolish
  20. Virus_LPK专杀

热门文章

  1. java生成二维码 推广海报添加二维码 文字水印 二维码添加LOGO
  2. 我的世界Linux服务端op,我的世界服务器OP指令大全
  3. 数据库课设作业《公寓管理系统》
  4. python获取当前时间并格式化显示
  5. Navicat Premium 安装 注册
  6. JAVA 用Steam求和
  7. 修改安装文件将windows xp 装到U盘
  8. 3人3天3桶水9个人9天用几桶水
  9. oracle安装-无法在节点上执行物理内存检查
  10. 命令行音乐播放器代码