逆向知识第一讲,IDA的熟悉使用

一丶熟悉IDA,以及手工制作sig文件.

IDA,静态分析工具,网上随便找一个即可下载.

首先,我们写一个可执行EXE,最简单的

使用IDA打开.

1.提示使用什么格式打开

因为是PE格式,所以我们选择PE即可.点击OK

2.重新打开一下

如果以前已经打开过这个PE,那么重新打开,则会显示这三个按钮,

1.overwrite 重新写入,代表覆盖以前的.(联系中常用这个,工作中不常用)

2.load existing 加载已经存在,这个很常用,因为有的时候汇编的注释很多,或者样本分析不会是一天完成,那么加载这个已经存在的即可.

3.取消.

3.打开后显示的视图

这个视图是罗列出函数的逻辑.

我们不看这个,主要是看汇编代码.

1.切换到汇编代码

右键,点击Text View

2.查看汇编代码.

这里有代码提醒功能,那么我们要学会怎么做,IDA是读取.sig文件,然后显示出来的.

那么我们要学会怎么做.

二丶制作.sig文件.IDA显示.

制作.sig文件,我们依赖于一个VC自带的工具,还有特征提取工具.

1.VC 自带的lib.exe

2.特征提取工具pcf.exe

都会打包.

第一个,我们首先手动制作一个.sig文件.

1.熟悉什么是特征,以及特征是什么.

先熟悉一下特征是什么

首先上图看到,我们已经显示出来了system这个库函数了,那么是怎么显示的? IDA读取sig文件,但是读取sig文件也要有特征匹配才会显示.

首先我们双击system,进去查看它的汇编,以及二进制代码.

默认是没有机器码的,所以我们要显示出来机器码.

Options(选项) - > General(一般)

然后出来下图

只需要在画红色方框的地方,写入大小,则会显示机器代码多少

特征就是固定的二进制代码, 注意,是固定的二进制代码,打死都不会变的.

比如上面的push ebp的机器代码,是55

但是注意,偏移不是,比如最后的一个红框后面的偏移,因为这个受很多因素干扰.

2.使用lib.exe提取obj文件出来.

注意,因为printf是属于libc.lib中,所以直接把libc.lib的obj提取出来

这里我的环境变量已经配置好了,可以直接使用CMD命令行了,注意,如果你没有配置,请网上搜索配置的方法.

vc的lib.exe目录所在文件.

vc98 -> bin ->lib.exe, 这里给的是一部分,因为我不知道你的vc在哪里装着,所以这个是不会变的.

而libc.lib所在的文件路径,也是在vc98下面,只不过不是bin了,变成了lib了

首先lib工具的使用命令

1.遍历lib中所有obj的文件

lib /list xxx.lib

2.lib.exe提取obj文件出来.

命令:

lib /extract: xxxxx.obj  lib文件名

比如上面随便提取一个

lib /extract: build\inter\st_obj\xxxxx.obj  libc.lib

3.使用pcf.exe(特征提取工具)

这个工具要自己去下载.

官方网址: http://www.hex-rays.com/products/ida/support/ida/flair61.zip

需要用户名和密码

当然也会打包,只不过版本比较低.

首先,使用pcf文件,生成一个.obj文件的特征码.结尾是.pat

命令:

pcf xxxx.obj

查看特征码格式.

前边都是机器码,后面的2E 2E 2E 2E...代表的是偏移什么的,反正就是做补充的.

比如机器码

55

68

FF 25 00 00 40 00

那么写到文件中就是55 68 FF 2E 2E 2E 2E 2E 2E 2E 2E

其中两个2E代表一个.

四丶生成.sig文件.

这个会用到sigmake的工具

命令  sigmake  xxxx.pat  xxxx.sig

举例子:

sigmake printf.pat  printf.sig

那么生成的文件就是printf.sig

只需要把这个文件拷贝到IDA目录下的sig目录下即可.然后使用IDA的时候我们需要简单设置一下.

命令就是上面那个命令

制作完成之后拷贝到IDA的sig目录下.

然后打开IDA, 快捷键Shift + F5

出来下面的界面

那么现在我们右键,添加我们的sig文件进去即可.这个时候我们的printf就可以显示了.

添加进去

点击OK即可.

此时我们的printf就已经显示出来了.

上面只是一个简单的.生成一个,当然可以写脚本生成很多个.

当然也有脚本,脚本使用方法.(.bat)

脚本名称  libc

注意不是libc.lib

可以一键升成libc库中的所有.sig

课堂资料:  链接:http://pan.baidu.com/s/1boN2Zvx 密码:rfag

转载于:

作者:IBinary
出处:http://www.cnblogs.com/iBinary/

原文地址:https://www.cnblogs.com/gd-luojialin/p/11219728.html

时间: 2024-08-29 08:03:14

逆向知识第一讲,IDA的熟悉使用的相关文章

逆向知识十一讲,识别函数的调用约定,函数参数,函数返回值.

逆向知识十一讲,识别函数的调用约定,函数参数,函数返回值. 在反汇编中,我们常常的会看到各种的函数调用,或者通过逆向的手段,单独的使用这个函数,那么此时,我们就需要认识一下怎么识别函数了. 一丶识别__cdecl 函数(俗称C Call),函数参数,函数返回值 首先写一个C Call的函数 1.返回值 int类型, 参数int 类型 高级代码: int __cdecl MyAdd(int a,int b) { return a + b; } int main(int argc, char* ar

逆向知识第九讲,switch case语句在汇编中表达的方式

一丶Switch Case语句在汇编中的第一种表达方式 (引导性跳转表) 第一种表达方式生成条件: case 个数偏少,那么汇编中将会生成引导性的跳转表,会做出 if else的情况(类似,但还是能分辨出来的) 1.高级代码: #include "stdafx.h" int main(int argc, char* argv[]) { switch(argc) { case 0: printf("case 0\n"); break; case 1: printf(&

PHP基础知识第一讲

第一部分:数据类型 (1)整型--PHP接受十进制.八进制和十六进制整数,为区分各种进制,八进制整数的前面加上0,十六进制加上0x 6-2 (2)浮点型(PHp小数点后最多保留14位) 6-3 (3)布尔型 (4)字符串 PHP规定字符串前后必须加上引号:单引号和双引号. 注意: 1.如果用单引号表示字符串时,字符串会被视为纯文字. 2.当字符串用双引号表示时,PHP会对字符串进行相应处理,比如进行变量解析或解释‘转义字符’ <1>单引号字符串:有两个转义字符:\\和\',分别被解析为\和'

云计算基础知识第一讲:云计算概念

云计算(cloud  computing)是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备. 云其实是网络.互联网的一种比喻说法.云计算有狭义云计算和广义云计算两种概念: 1.狭义云计算: 指 IT 基础设施的交付和使用模式,指通过网络以按需.易扩展的方式获得所需资源. 2.广义云计算: 指服务的交付和使用模式,指通过网络以按需.易扩展的方式获得所需服务.这种服务可以是IT.软件.互联网相关,也可以是其他服务. 3.云计算示意图: 4.云计算核心思想

逆向知识第六讲,取摸优化的几种方式

逆向知识第六讲,取摸优化的几种方式 除法讲完之后,直接开始讲 % 运算符在汇编中表现形式 首先C的高级代码贴上来. 高级代码: // Tedy.cpp : Defines the entry point for the console application. // #include "stdafx.h" int main(int argc, char* argv[]) { unsigned Number; scanf("%d",&Number); //防止

【Python基础教程第2版】——第一讲:基础知识

1.长字符串:(用三引号如'''或者"""来引起来) >>> print """This is a very log string.It continues here.And it's not over yet."Hello world!"""" This is a very log string.It continues here.And it's not over yet.&

逆向实用干货分享,Hook技术第一讲,之Hook Windows API

逆向实用干货分享,Hook技术第一讲,之Hook Windows API 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶什么是Hook,以及Hook能干啥 首先这一个小标题主要介绍神马是Hook,如果知道的,则不用看了. 这里我偷袭啊懒,贴出Hook的意思  https://baike.baidu.com/item/%E9%92%A9%E5%AD%90%E7%A8%8B%E5%BA%8F Hook,英文单词中成

逆向知识十三讲,汇编中数组的表现形式,以及还原数组

逆向知识十三讲,汇编中数组的表现形式,以及还原数组 讲解数组之前,要了解数组的特性 1.数据具有连续性 2.数据类型相同 比如: int Ary[3] = {0,1,2}; 我们可以看出,上面定义的数组,数据是连续的,其中每个数据类型大小都是int类型(类型也是一样的) 汇编中识别数组: 1.地址连续 2.带有比例因子寻址   (lea  reg32,[xxx  + 4 *xxxx]) 一丶一维数组在汇编中的表现形式 首先说下数组寻址公式,便于下面讲解 公式: 数组首地址 + sizeof(ty

汇编代码还原第一讲,基本类型以及浮点编码.

目录 代码还原技术 一丶简介代码还原 二丶代码还原中的数据类型表现形式 1.整数类型 2.无符号整数 3.有符号整数 4.浮点数数据类型 5.浮点编码 4.Double类型解析. 三丶浮点汇编 1.浮点栈 2.浮点汇编 3.使用内联浮点汇编实现加法 四丶布尔类型 地址丶指针丶引用表达形式 常量 #define与const定义 总结: 代码还原技术 一丶简介代码还原 例子一:我们很多人都学习过汇编.但是汇编的核心知识就是我能看的懂.有人拿汇编去做外挂.比如我去追偏移.看着视频去做.然后换一个游戏依