完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本人也是菜鸡一枚,此教程仅针对新手,大佬请自行略过,失误之处请多指正。
IDA Pro(简称IDA)是DataRescue公司(www.datarescue.com)出品的一款交互式反汇编工具,它功能强大、操作复杂,要完全掌握它,需要很多知识。IDA最主要的特性是交互和多处理器。操作者可以通过对IDA的交互来指导IDA更好地反汇编,IDA并不自动解决程序中的问题,但它会按用户的指令找到可疑之处,用户的工作是通知IDA怎样去做。比如人工指定编译器类型,对变量名、结构定义、数组等定义等。这样的交互能力在反汇编大型软件时显得尤为重要。多处理器特点是指IDA支持常见处理器平台上的软件产品。IDA支持的文件类型非常丰富,除了常见的PE格式,还支持Windows,DOS,UNIX,Mac,Java,.NET等平台的文件格式。 当我们打开之后,IDA会提供3种不同的打开方式;New(新建),Go(运行),Previous(上一个)。当我们初次打开的时候选择GO就可以了。 进入之后,选择左上角的file中的open打开文件。 以凯撒密码为例,打开文件以后。主界面工作区显示 IDA View-A是反汇编窗口, HexView-A是十六进制格式显示的窗口, Imports是导入表(程序中调用到的外面的函数), Functions是函数表(这个程序中的函数), Structures是结构, Enums是枚举。 我们此时可以F5查看伪代码。 我们进行逆向分析的主要场所就在IDA View-A反汇编窗口。 IDA图形视图会有执行流,Yes箭头默认为绿色,No箭头默认为红色,蓝色表示默认下一个执行块。我们可以在左侧查看代码的运行过程,按下空格键也可以直观地看到程序的图形视图。 在反汇编窗口中大多是eax, ebx, ecx, edx, esi, edi, ebp, esp等。这些都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。这些寄存器相当于C语言中的变量。 EAX 是”累加器”(accumulator), 它是很多加法乘法指令的缺省寄存器。 EBX 是”基地址”(base)寄存器, 在内存寻址时存放基地址。 ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。 EDX 则总是被用来放整数除法产生的余数。 ESI/EDI 分别叫做”源/目标索引寄存器”(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串。 EBP 是”基址指针”(BASE POINTER), 它最经常被用作高级语言函数调用的”框架指针”(frame pointer)。 ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。 还有一些指令,如:mov,jmp等。 资料转移指令 MOV 移动 MOVC 程式记忆体移动 MOVX 外部RAM和扩展I/O口与累加器A的数据传送指令 PUSH 放入堆叠 POP 由堆叠取回 XCH 8位元交换 XCHD 低4位元交换 SWAP 高低4位元交换 算术指令 ADD 两数相加 ADDC 两数相加再加C SUBB 两数相减再减C INC 加一指令 DEC 减一指令 MUL (MUL AB乘法指令仅此一条)相乘指令,所得的16位二进制数低8位存累加器A高8位存B DIV (DIV AB 除法指令仅此一条)相除指令,所得商存A,余数存B DA (DA A 只此一条指令)调整为十进数 逻辑指令 ANL做AND(逻辑与)运算 ORL做OR(逻辑或)运算 XRL 做(逻辑异或)运算 CLR 清除为0 CPL 取反指令 RL 不带进位左环移 RLC 带进位左环移 RR 不带进位右环移 RRC 带进位右环移 控制转移类指令 JC C=1时跳 JNC C=0时跳 JB 位元=1时跳 JNB 位元=0时跳 JBC 位元=1时跳且清除此位元 LCALL 长调用子程序 ACALL 绝对调用子程序 RET 由副程式返回 RETI 由中断副程式返回 AJMP 绝对转移 SJMP 相对转移 JMP @A+DPTR 散转,相对DPTR的间接转移 JZ A=0时跳 JNZA 0时跳 CJNE 二数比较,不相等时跳 DJNZ 减一,不等於0时跳 NOP 空操作 位变量指令 SETB 设定为1 ORG 程序开始,规定程序的起始地址 END 程序结束 EQU 等值指令(先赋值后使用)例:SUM EQU 30H DB 定义字节指令 DW 定义字内容 DS 定义保留一定的存贮单元数目 BIT 位地址符号指令 例:SAM BIT P1.0 RET 子程序返回指令 RETI 中断子程序返回指令 $ 本条指令地址 了解这一些,相信大家可以更快的上手IDA这个利器了! |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1618 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1545 浏览 1 评论
979 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1597 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 14:39 , Processed in 0.862637 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号