ida 数据操作

http://cwc206.5d6d.com/thread-848-1-1.html

 

默认表情酷猴呆呆男       
       
       
   
 

免费注册 登录   输入您的搜索字词  提交搜索表单  
   Web  cwc206.5d6d.com
      
超的个人论坛开通窝窝 5d6d站长俱乐部插件导航论坛HOME页 默认风格uchomegraygreen2009D DarkWater_V3圣诞女孩新年2010超的个人论坛» 综合投稿(原创为主) » 关于我 » IDA简易教程共十四章(1)5元=60金币可下载60个附件.点这里进入淘宝购买,拍下后联系 QQ399575079帮您充值论坛积分
 
 
       网页搜索 站内搜索搜索
 返回列表 回复 发帖 斗地主锦标赛,诚邀您的加入 

发新话题发布投票发布悬赏发布辩论发布活动发布视频发布商品
超迷NO:1发短消息
加为好友
cwc206 (超越自我)当前离线

论坛支柱

UID1 帖子2887 精华36 积分5863 威望58 点 金钱2441 ¥ 贡献5422  回复力1199 帖 阅读权限255 性别男 在线时间1382 小时 注册时间2009-4-1 

管理员

 

积分5863 威望58 点 金钱2441 ¥ 回复力1199 帖 人气30 °C 在线时间1382 小时
 楼主
打印 字体大小: tT  cwc206(性别: ) 发表于 2009-6-18 17:30 | 只看该作者    踩窝窝   送礼物   问候Ta  最新刷机资料
点下面的链接
 
最新刷机资料1
最新刷机资料2
4月3日BIN教程工具集中帖
刷机教程大全
刷机工具大全 
2.10-3.2 刷机bin大全
3月3日后刷机bin大全
进入淘宝冲值600金币

 

 

[转载] IDA简易教程共十四章(1)
   关于“ida 数组”的内容
IDA简易教程共十四章(2)
IDA简易教程共十四章(1)
本站搜索更多关于“ida 数组”的内容

今天看了站长经验交流版块发了一篇关于反编译软件IDA的文章,发现下载后不会使用,倒不是英文版的问题而是软件不知道从何处下手,刚才从网上查了关于IDA的简易教程,就顺便摘录过来。下面原文转载那篇文章。因为文章较长,所以我分2篇转载

第一节:C语言的小程序
为了演示IDA的功能先写一段小程序。
程序执行结果:
CUSTOMERS:
CUSTOMER 0001: Peter (m)
CUSTOMER 0002: John (m)
CUSTOMER 0003: Mary (f)

PRODUCTS:
PRODUCT 0001: BOOK: IDA QuickStart Guide
PRODUCT 0002: SOFTWARE: IDA Pro: PC; WINDOWS DOS; DISASSEMBLY
PRODUCT 0003: SOFTWARE: PhotoRescue: PC MAC; WINDOWS OS-X; RECOVERY
PRODUCT 0004: SOFTWARE: aCrypt: PC; WINDOWS; CRYPTOGRAPHY

----------------------------------------------------------------------
第二节:基本类型的识别
用IDA分析我们前面的程序,我们会发现下图的类型

 

只要按"D"我们就可以任意转换这些不确定的类型.可以变成byte,word,dword(db,dw,dd)。
当然你也可以设置更多的数据转换类型:
选择“Options”菜单的“Setup data types”命令就可以设置了

 

值得注意的是:你在数据转换的时候,它是依据数据自身的结构来转换的。我们按“D”的时候,
如果下一个字节已经被你转换过,你的本次转换,IDA将会提示让你确认。

 

注:如果你想改变这种默认设置可以在“Options”菜单“Convert already defined bytes”命令里设置

 

撤销你的所有转换按“U”键。
                                                     
-------------------------------------------------------------------------------------
第三节:操作数格式
数据类型自定义转换后,被操作过的数据(就是你按过“D”的)的进制IDA也是可以自定义转变的,
通过在“Operands”工具栏的“Number”命令我们可以随意转换数字的进制

 

最下面的“Toggle leading point”就是填补数据前的空位为0(就是说如果当前数据未占满数据格式的所有位高位用0来填补)

 

 

 

IDA还可以转换数据的标志位(就是正负)具体操作如下图:

 

 

最后呢~~如果这些转换你还不满意(够BT)当然你还可以自定义数据进制如图:

 


                                                            

-----------------------------------------------------------------------------------------

第四节:字符和字符串的操作

 

作者又说话了:很多程序都是包含字符串的,一些被操作过的数据(就是你按过“D”的)可以转化为

字符,使用的命令就在“Operands”工具栏上

 

 

由于编程语言的不同造成字符串也有不同的格式,当然IDA就支持所有的格式了。
IDA在转化后会在地址添加一个名字。因为我们的程序是c的所以就找到c的字符串。具体操作如图:

 

如果不是C写的程序怎么办呢?我们可以在“Options”菜单“ASCII string style”命令中设置。
允许你修改其它类型为默认设置,使用默认设置的快捷键是“A”,或者自定义一种类型可以使用不常用的终止字符。

 

                                                              
--------------------------------------------------------------------------
第五节:数组
在c中,ASCII字符串被认为是字符数组,IDA是如何处理数组的呢?
我们用最常用命令来定义数组中的第一个元素,设置第一个元素类型为byte,格式为char,然后点击“*”号键(或者“Edition ”工具栏的“Array”命令)来创建数组。这时弹出一个对话框,可以设置很多变量。

 

你可以定义数组一行的显示个数,还可以使用“Element width”来设置他们之间的宽度。
使用“Use dup construct ”选项可以合并连贯的相似字节,“ Display index ”选项可以像注释一样显示数组的下标。

例如我们设置一个有64个元素的数组,一行有8个元素,每个元素之间的宽度为4,不选取“dup constructs”,选取“Display index ”,我们就可以得到下面的数组。

 

当IDA遇到未被识别的字节他会用红色的高亮显示。

当然你也可以选择一个范围来创建数组,IDA会自适应的设定。

 

                                                          
------------------------------------------------------------------------------------ 


收藏 分享 评分
如果您觉得资源好,请回帖支持鼓励下,也让更多人知道这个资源的重要性。谢谢!
超的个人论坛默认新注册用户只能回复50帖,10金,回复力为"0"时将无法回复.金币为0无法下载收费附件
回复力及金币获得方法完成论坛任务
 
 回复 引用 订阅 TOP
 
 


超迷NO:1发短消息
加为好友
cwc206 (超越自我)当前离线

论坛支柱

UID1 帖子2887 精华36 积分5863 威望58 点 金钱2441 ¥ 贡献5422  回复力1199 帖 阅读权限255 性别男 在线时间1382 小时 注册时间2009-4-1 

管理员

 

积分5863 威望58 点 金钱2441 ¥ 回复力1199 帖 人气30 °C 在线时间1382 小时
 沙发
 cwc206(性别: ) 发表于 2009-6-18 17:31 | 只看该作者    踩窝窝   送礼物   问候Ta 无法回复本站文章该怎么办?
如何快速获得超的个人论坛金币
大量免费资源共享
休闲娱乐搞笑花边新闻
精彩美女图片视频等你来..
第六节:枚举类型
还记得我们在C程序中定义的product_category_t 类型吗?
让我们用IDA的“Enumerations”来定义一下。

首先,我们打开“Enumerations”窗口来创建一个新的枚举类型

 

 
我们输入我们的枚举类型值

 

 
在check_product()函数,我们可以用枚举类型重新定义一些操作数。
右键点击在数值上,就会弹出一个菜单,选择“Symbolic constant”。
IDA就会自动列举枚举值,用以匹配当前的数值。

 

 
操作完成,我们就会得到下面的结果:

 


-----------------------------------------------------------------------------------------------------
第七节:Bit-fields(位域)
BTW:Bit-fields,我的理解就是在结构体中的位标志。太菜!希望高手指正!
现在,我们来定义一下在software_info_t 结构中的bitfields。
IDA的观点就是,bitefields是一种特殊的枚举类型。
我们可以选择在枚举类型创造窗口中的“Bitfield”选项。

 

还记得我们曾经在我们的程序中建立了两种不同类型的bitfields ,
plateform和os包含了一种隐藏的模式:用来包含组合模式(用逻辑或来操作) 。因为一种产品可以同时在几种plateforms和OS的组合。另一方面,category bitfield 中每一个数字表示一种类别:一种产品每次只能属于一种类别。
在IDA中一种指定的模式,bitfield只能包含一个值。所以在描述plateform 和category bitfields时为了显示组合模式,我们必须创建一个小的bitfields,每个值的一个bit.

 

现在我们开始创建category bitfield。mask值为0x3 (2 bits).我们指定一个名字、一个值、还有bitfield mask。我们还需要定义mask的名字:这个我们不用IDA自动生成的,IDA有一个内存助手可以帮助生成。

 

当所有的bitfields被输入,我们就会得到下面的结果:

 

用Operands 工具栏上的Enum member命令就可以定义我们程序中的Enum member数据

 

                                                                                                    TOP
---------------------------------------------------------------------------------------------------------
第八节:结构体
我们的程序当中包含了很多结构体。现在让我们来在IDA中描述一下结构体,
看看是怎么提高汇编代码的可读性。
第一步,我们必须打开Structures 窗口,来创建一个新的结构体类型。

 

结构体的成员是一汇编的模式定义的。让我们来定义software_t 结构中的第一个成员。
一直按“D”知道它变成“dd”意思就是这个成员的值为 dword类型。
把它的格式定义为我们以前定义好的software_info_t 枚举类型,然后我们用Rename命令输入一个适当的名字:info

 

开始定义第二个成员,这次使用ASCII命令(按“A”),在这个环节
IDA会弹出一个专用对话框用来设定字符串的大小

 

我们还可以从已经分析好的数据中来建立结构体。
举个例子:假设我们选择了一块数据正好是和我们的customer_t结构体的数据格式一样,我们就可以用IDA的“Create struct from data ”命令来创建结构体

 

 
一旦使用了这个命令,IDA就会在Structures窗口创建一个相对应的结构体
我们使用“A”键来修改name成员的长度为32bytes(和我们源代码中定义的一样),然后再给结构体一个好听的名字。


我们拿这些结构体有什么用呢?IDA提供给我们两种方法:
·Apply structure types to initialized data in the program.
·Convert operands as offsets inside structures.
我们将在下面的教程当中来介绍这两种方法
                                                                                            TOP
--------------------------------------------------------------------------------------------------------------------- 

本站所有获得金钱及回复力的途径归纳(2010年5月5日)
如果您觉得资源好,请回帖支持鼓励下,也让更多人知道这个资源的重要性。谢谢!
超的个人论坛默认新注册用户只能回复50帖,10金,回复力为"0"时将无法回复.金币为0无法下载收费附件
回复力及金币获得方法完成论坛任务
 
 回复 引用 评分 TOP
 
 


超迷NO:105发短消息
加为好友
忠诚 当前离线

UID105 帖子29 精华0 积分48 威望1 点 金钱249 ¥ 贡献43  回复力191 帖 阅读权限90 在线时间4 小时 注册时间2009-7-26 性别人妖
VIP会员

 

积分48 威望1 点 金钱249 ¥ 回复力191 帖 人气1 °C 在线时间4 小时  3楼
 忠诚(性别: ) 发表于 2009-11-19 16:44 | 只看该作者    踩窝窝   送礼物   问候Ta 不错看看。。。。。。。。。。 

永远忠诚
 
 回复 引用 评分 TOP
 
 

   
 返回列表 

    高级回复 | 发新话题 B Color

 

 

Image Link Quote Code Smilies 
 换一个  发表回复
 

综合交流
综合投稿(原创为主)
关于我
热门专区
5d6d代码教程分享
接收机刷机技术交流(卫星)
刷机求助答疑区
刷机资源分享区
休闲娱乐谈天说地
明星:J.NOT何洁
最新MV资源分享
精品软件代码资源
会计考试资源下载专区
海峡项目交易(高校)
学习讨论
家电维修
电视技术交流
移动通讯资源
各种电路图下载
站长交流
电脑问题
文学天地
精彩短篇小说
win7专区
win7系统下载 / 装机光盘
win7桌面美化 / 壁纸下载
win7系统优化 / 技术进阶
Win7 驱动程序 / 驱动交流
win7用户交流/问题求助
生活讨论
健康常识
社会新闻
体育天地
情感空间
音乐空间
游戏讨论
冒险岛
魔兽真三国无双
名将三国
三国视频
其他游戏
社区管理
论坛活动中心
会员服务中心
回收站-『超的个人论坛』爱墙 账号发放中心 领取红包 社区银行 网页游戏 便民中心 挖金子争车位开心农场荣光医院开心宝贝-
超的个人论坛 ( 闽ICP备09051391号)|联系我们 |论坛统计|Archiver| 站长统计 | 

GMT+8, 2010-7-7 09:53, Processed in 0.205741 second(s), 8 queries, Gzip enabled.
Powered by Discuz! 7.0.0

© 2001-2010 Comsenz Inc.

本篇文章来源于 超的个人论坛(http://cwc206.5d6d.com/) 原文出处:http://cwc206.5d6d.com/thread-848-1-1.html

posted @ 2010-07-07 10:08  南守拥  阅读(558)  评论(0编辑  收藏  举报