IDA使用之旅(一)用IDA查看最简单的sys文件

2023-11-13

转载请标明是引用于 http://blog.csdn.net/chenyujing1234 

欢迎大家拍砖!

 

本系列内容是我根据“知其所以然论坛”博主录制的学习视频,做的笔记。

使用的IDA软件版本: IDA.pro.5.5 (参考下载地址: http://www.pc6.com/softview/SoftView_55231.html

下载后得到IDA.pro.5.5dapro55.zip文件。

 

在Windows 下可以开发exe文件,exe是不可逆向的,通过IDA可以把应用程序逆向,并非不是完全逆向,因为EXE已经把代码优化了。

DEBUG比RELEASE能更好逆向。

IDA它支持多种文件的反汇编,如exe 、sys、dll等。

一、IDA软件的安装

1、安装DIA软件

把IDA.pro.5.5dapro55.zip解压后得到,双击它安装;

2、汉化

将IDA.pro.5.5dapro55.zip解压后得到的文件

继续解压得到,将它拷贝到IDS的安装目录下。

^-^ 此时运行IDA程序,可以看到程序界面了:

 

我们点击运行按钮,进入到主界面:

 

二、测试一个最简单的驱动程序

1、准备要测试的驱动程序

编译方法可参考我的文章:<<http://blog.csdn.net/chenyujing1234/article/details/7674104>>

之所以简单,是因为只有一个文件sys.c,文件中只有两个函数:

#include <ntddk.h>

VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject) 
{
   KdPrint(("Enter DriverUnload\n"));
   KdPrint(("Leave DriverUnload\n"));
}



extern NTSTATUS DriverEntry (
			IN PDRIVER_OBJECT pDriverObject,
			IN PUNICODE_STRING pRegistryPath	) 
{
   NTSTATUS status;
   status=STATUS_SUCCESS;
   KdPrint(("Enter DriverEntry\n"));
   pDriverObject->DriverUnload = HelloDDKUnload;
   KdPrint(("DriverEntry end\n"));
   return status;
}

编译后得到我们的目标文件: sys.sys

 

2、反汇编实现

把sys.sys拖到IDA程序里。这里要选择载入的文件类型:

第一个是:PE文件

第二个是:DOS 可执行文件

第三个是:二进制文件。(用于有时我们不知道它的文件类型,eg:ROM镜像文件)

这里我们按默认的。(一般程序会帮我们自动选择类型。)

全部按默认,点确定;接下来会提示是否加载PDB文件,点YES。

此时在输出窗口中显示:

此时我们的结果出来了.

 

3、简要分析

我们可以看到在IDA View-A选项卡上会显示三种颜色。

蓝色: 表示是代码段;

棕色: 表示是数据段;

红色: 表示是内核;

 

3、1  代码段

 

.sys文件一般是从00010000开始的,而.exe一般是从00040000开始的,dll是从00070000开头的。

在查看的汇编代码中,如果可以标识符进步重命名,之后与它有关的所有名字都会改变。

 

 

接下来我们来查看函数DriverEntry

下图表示:把_HelloDDKUnload@4的代码放入eax+34h的内存中。这样当卸载时可以调用。

 

3、2  数据段

在数据段时若我们判断是字符串,那么可以选择以C风格来查看。

得到的结果如下:

 

若要还原为UNICODE风格,则选择

 

4、退出IDA

4、1   退出时提示是否要保存,我们选择不保存,且不存数据库。

这样我们文件夹中生成的四个文件会被删除:

id0:二叉树数据库
id1:文件包含描述每个程序字节的标记

nam:包含IDA NAME窗口的数据库
til:本地数据库有关信息

 

4、2  保存后退出。

保存也有两种方式,一种是压缩,一种是不压缩。

注意:在使用IDA过程中要经常保存,因为IDA常会崩溃,这样会造成数据丢失。

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IDA使用之旅(一)用IDA查看最简单的sys文件 的相关文章

  • 如何使用ilMerge将dll合并到exe文件中? [复制]

    这个问题在这里已经有答案了 可能的重复 将 dll 与 exe 合并 https stackoverflow com questions 14551311 merging dll with exe 好的 所以 我将 ilmerge 的所有文
  • 为什么这个对象的“forEach 不是函数”?

    这可能真的很愚蠢 但我不明白为什么这不起作用 var a cat large a forEach function value key map console log value 未捕获的类型错误 a forEach 不是函数 http j
  • 从键值为空数组的 JS 对象中删除

    我正在尝试从值为 Array 0 的对象中删除键 这是对象 fruit Array 1 dairy Array 2 vegetables Array 0 这是期望的结果 fruit Array 1 dairy Array 2 到目前为止 我
  • 使用带有通配符的 jquery grep 搜索对象数组

    我正在使用 jquery grep 搜索对象数组 并希望在搜索中包含通配符 例如 我有一个数组如下 courses code ENCH3TH otherFields otherStuff code ENCH3THHS1 otherField
  • 更改代码使用指针实现多对多关系

    我在 Movie hpp 中有以下代码 ifndef MOVIE H define MOVIE H class Movie private std string title public std string getTitle const
  • 如何从另一个 Excel 实例引用工作簿

    我相信我的问题相当简单 我有一个工作簿 我正在使用它从另一个软件 SAP 获取一些数据 当我从软件导出数据时 它会自动打开一个 xlsx 文件 然后我需要做的是从该文件复制一些数据 粘贴到我的原始工作簿上 然后关闭该文件 我的代码中给我带来
  • 如何在 Python 中创建对象的副本?

    我想创建一个对象的副本 我希望新对象拥有旧对象的所有属性 字段的值 但我想要有独立的对象 因此 如果我更改新对象的字段值 旧对象不应受到影响 要获得对象的完全独立的副本 您可以使用copy deepcopy http docs python
  • for 循环内的 Promise 的 setTimeout

    我想做的是这样的 循环数据集合 对于每个数据元素调用 API 等待 Promise 失败或解析 暂停 30 秒 然后对下一个数据元素再次执行此操作 直到没有任何内容可以迭代集合 最后显示 完成 消息 到目前为止 这是我编写的代码 在其他问题
  • 删除 NSMutablearray 中的最后一个对象[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 为什么要删
  • Django“模型”对象不可迭代

    我有一张表 其中显示了已注册的员工 我想根据他们的数据库生成一个简单的 HTML 页面 其中包括他们的姓名 id 职称等 为此 我将一个 id 传递给视图 以便它可以获取相应用户的详细信息并向我显示 一切正常 直到出现错误对象不可迭代 下面
  • 为什么对于整数键,“Map”操作比 JavaScript (v8) 中的“Object”慢得多?

    我很高兴使用Map对于在我的 JavaScript 代码库中随处访问的索引 但我刚刚偶然发现了这个基准 https stackoverflow com a 54385459 365104 https stackoverflow com a
  • ASP.NET MVC:如何将多个对象传输到 View 方法?

    我完成了 NerdDinner 教程 现在我正在玩一些项目 索引页显示所有即将举行的晚餐 public ActionResult Index var dinners dinnerRepository FindUpComingDinners
  • C#中如何将委托转换为对象?

    我正在使用反射类来调用其他 dll 上的一些方法 方法的参数之一是委托类型 我想通过使用反射来调用这个方法 所以我需要将函数参数作为对象数组传递 但我找不到任何关于 如何将委托转换为对象 提前致谢 委托是一个对象 只需像平常一样创建预期的委
  • JavaScript 中的字符串基元和字符串对象有什么区别?

    取自 字符串文字 用双引号或单引号表示 和字符串 从非构造函数上下文中的 String 调用返回 即 没有 使用 new 关键字 是原始字符串 自动 JavaScript 将基元转换为 String 对象 以便可以使用 原始字符串的字符串对
  • Typescript 继承:扩展基类对象属性

    当扩展一个类时 我可以轻松地向它添加一些新属性 但是 如果当我扩展基类时 我想向基类的对象 简单对象的属性 添加新属性怎么办 这是一个带有一些代码的示例 基类 type HumanOptions alive boolean age numb
  • 减少 JavaScript 中的对象数组

    我在 javascript 中有一个想要减少的对象数组 请参阅下面的代码 6 位或以上的消息已验证 较少的消息未验证 我将他们按组分组 const myArray group groupA message Text without a nu
  • 当我尝试在 PHP 中访问类变量时,类变量为 null

    好吧 这是我的主要代码 require checkpassword php require mysqllogininfo php Validate password if validatePassword GET password retu
  • 关于访问说明符

    我定义了一个类基 class Base private int i Base int i this i i 所以基类的对象可以访问私有变量 class BaseDemo public static void main String args
  • 将 FORTRAN 对象传递给 C,反之亦然

    我有我的 Fortran 对象 即 this object a this object b this object c 我想将它传递给用 C 编写的代码 我主要是一名 FORTRAN 程序员 而且我很少接触 C 我正在使用iso c bin
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h

随机推荐

  • Android开发之http网络请求返回码问题集合

    HTTP状态码 HTTP Status Code 一些常见的状态码为 200 服务器成功返回网页 404 请求的网页不存在 503 服务不可用 一 1xx 临时响应 表示临时响应并需要请求者继续执行操作的状态代码 代码 说明 100 继续
  • 【golang】派生数据类型---指针 && 标识符、关键字等

    1 指针 对比C C 中的指针 go语言中的指针显得极为简洁 只是简单的获取某个空间的地址 或者 根据指针变量中的内容 获取对应存储空间的内容等操作 具体示例如下 go中使用指针需要注意的点 可以通过指针改变它所指向的内存空间中的内容 指针
  • linux删除文件后硬盘空间不释放

    查看被删除了的所有文件 lsof n grep deleted 杀死这些文件的delete进程 释放空间 lsof n grep deleted awk print 2 xargs kill 9 接着再运行lsof n data grep
  • 模糊神经网络

    参考 https wenku baidu com view 94f77a7384868762cbaed58f html https wenku baidu com view 22590c72cc17552706220818 html 1 模
  • 新唐M0 内核 FLASH操作认识和总结

    本文不对代码做详细解析 先说结论 和常见问题 结论 结论1 FLASH在操作的时候 需要先 擦除 然后在 写入 结论2 擦除需要一整块擦除 不能只擦除某几个字节 结论3 写入是可以按照字节这样写入的 但是 结论1 的存在 导致写入也整片写入
  • linux syslog函数,Linux syslog相关函数详解

    介绍 syslog是Unix系统的日志系统 可以将日志记录在本地系统中 一个完整的syslong日志包含如下信息 程序模块 严重性 时间 主机名 进程名 进程ID 正文 syslong相关函数 1 openlog 函数 调用openlog
  • 迅为IMX6ULL-从C++到QT系统移植(QT视频他来了~)

    零基础的QT视频他来了 1 主打零基础入门 手把手教学 从C 到QT系统移植 带你打通QT的任督二脉 2 独创的框架学习法 先掌握整体的QT开发流程 然后在逐一击破 3 从Windows上位机开发 到Linux界面开发 再到手机APP开发
  • java中最小生成树的实现

    最小生成树的实现 import java util ArrayList import java util List public class ShortestTree int dataMap 1 1 10 1 30 100 1 1 5 1
  • java 数组追加数据

    想要追加数据 需要的流程是 数组 gt List gt 数组 案例 import java util ArrayList import java util Arrays import java util List public class
  • [MATLAB]Jacobi迭代

    MATLAB代码 关于使用雅可比迭代法求线性方程组的数值解 jacobi m 定义Jacobi迭代函数 function x n jacobi A b x0 eps 计算迭代矩阵 D diag diag A L tril A 1 U tri
  • Docker入门到实践 (六) docker网络模式详解以及容器间的网络通信

    文章目录 一 前言 二 docker网络模式介绍 1 默认网络 1 1 bridge网络模式 1 2 host网络模式 1 3 none网络模式 1 4 container网络模式 2 自定义网络 2 1 创建网络 2 2 连接网络 2 3
  • 微软收购暴雪的野心:与索尼争雄 重金布局元宇宙

    1月18日 微软发布声明称 将以全现金方式斥资687亿美元收购游戏巨头动视暴雪 这将成为微软有史以来规模最大的一笔收购 同时也将改写游戏行业的收购纪录 完成这笔收购之后 使命召唤 魔兽世界 糖果传奇 暗黑破坏神 守望先锋 等脍炙人口的作品将
  • element-ui el-cascader 级联选择器 联动默认值

    在使用 element ui 的 el cascader 组件根据后台返回的数据 需要展示一个默认值 官网给出的例子https element eleme cn 2 0 zh CN component cascader 借鉴了一下 话不多说
  • hexo博客搭建-背景知识(二)

    yum与rpm的区别 rpm适用于所有环境 而yum要搭建本地yum源才可以使用 yum是上层管理工具 自动解决依赖性 而rpm是底层管理工具 gcc cc c g 命令行详解 gcc包含的c c 编译器 gcc cc c g gcc和cc
  • JDK8 网络Net包研究(一)

    网络基础 1 国际标准化组织的OSI 开放式系统互联模型 七层模型 2 TCP IP协议 组 四层模型 3 TCP IP协议组 一组包括TCP协议和IP协议 UDP协议 ICMP协议和其他一些协议的协议组 网络层 IP协议 gt 网络互连协
  • sqlserver存储过程基本语法

    转载自 sqlserver存储过程的基本语法 1 定义变量 简单赋值 declare a int set a 5 print a 使用select语句赋值 declare user1 nvarchar 50 select user1 张三
  • ElasticSearch——全文检索

    ElasticSearch 全文检索 来源 尚硅谷 谷粒商城高级篇 一 简介 官网 https www elastic co cn what is elasticsearch 全文搜索属于最常见的需求 开源的 Elasticsearch 是
  • TypeScript学习(一):快速入门

    文章目录 一 TypeScript 简介 1 TypeScript 是什么 2 TypeScript 与 JavaScript 的区别 3 JavaScript 的缺点 4 为什么使用 TypeScript 二 TypeScript 开发环
  • 软件设计命名规范

    1 命名约定 Pascal和Camel命名约定 编程的命名方式主要有Pascal和Camel两种 Pascal 每个单词的首字母大写 例如ProductType Camel 首个单词的首字母小写 其余单词的首字母大写 例如productTy
  • IDA使用之旅(一)用IDA查看最简单的sys文件

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 本系列内容是我根据 知其所以然论坛 博主录制的学习视频 做的笔记 使用的IDA软件版本 IDA pro 5 5 参考下载地址 http w