这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可.
ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。
汇编中的ASSUME
经常用来将寄存器当作结构体指针来用
ASSUME edx:ptr STRUCT ;
将edx 定义为STRUCT指针变量把STRUCT结构体的起始地址给edx
lea edx, STRUCT
这个时候可以用 [edx].调用STRUCT的字段
ASSUME edx:nothing ;
取消定义 这个时候edx 不是指针
[edx].不能调用字段了
如果是8086的那么将段REG ASSUME DS:(某个数据段)
这样程序在使用这个数据段会用DS做段
Code段是不能指定段REG的 必须是CS:IP(EA) 快捷键
1. 按空格键切换反汇编窗口(列表视图《=====》图形视图)
反汇编窗口有两种显示格式:面向文本的列表视图和图形视图。不同视图在不同的场景下各有所长,按空格键可以快速切换。
2. 翻页 esc 和 Ctrl+Enter
当执行跳转功能后,需要返回时,只要在工具栏中点击 <- 或按Esc键,列表便会往后跳一页;
若要往前一页,点击 -> 或按”Ctrl+Enter”键.
3. 注释 “;”和”:”
按;号输入的注释,所有交叉参考处都会出现,
按:号键输入的注释只在该处出现
4. 使用小键盘“-”,“+”查看函数之间的关系
IDAView下使用小键盘“-”,“+”快捷方式可以在代码同关系图之间切换。
5. 使用[X]查看符号引用
IDA View下使用[X]快捷方式,定位引用了当前符号的代码。
6. 快捷键F5显示C伪代码
如果有[Main menu]->[View]->[Open SubViews]->[Pseudocode F5]菜单,说明你已经安装了Hex Rays decompiler插件,可以在查看汇编的时候,按[F5]打开伪代码子窗口。
7. 使用快捷键”*”把变量重定义为数组。
8. 快捷键Ctrl+S,打开搜索类型选择对话框–>双击Strings,跳到字符串段–>菜单项“Search–>Text”;
9. 快捷键Alt+T,打开文本搜索对话框,在String文本框中输入要搜索的字符串点击OK即可;
Open Subviews
窗口名称 快捷键 Names Window Shift+F4 Functions Window Shift+F3 Strings Window Shift+F12 Segments Shift+F7 Segment registers Shift+F8 Signatures Shift+F5 Type libraries Shift+F11 Structures Shift+F9 Enumerations Shift+F10 Data Format Options
窗口名称 快捷键 备注 ASCII strings style Alt+A Setup data types Alt+D File Operations
窗口名称 快捷键 备注 Parse C header file Ctrl+F9 Create ASM file Alt+F10 Save database Ctrl+W Navigation
窗口名称 快捷键 备注 Jump to operand Enter Jump in new window Alt+Enter Jump to previous position Esc Jump to next position Ctrl+Enter Jump to address G Jump by name Ctrl+L Jump to function Ctrl+P Jump to segment Ctrl+S Jump to segment register Ctrl+G Jump to problem Ctrl+Q Jump to cross reference Ctrl+X Jump to xref to operand X Jump to entry point Ctrl+E Mark Position Alt+M Jump to marked position Ctrl+M Debugger
窗口名称 快捷键 备注 Start process F9 Terminate process Ctrl+F2 Step into F7 Step over F8 Run until return Ctrl+F7 Run to cursor F4 Breakpoints
窗口名称 快捷键 备注 Breakpoint list Ctrl+Alt+B Watches
窗口名称 快捷键 备注 Delete watch Del Tracing
窗口名称 快捷键 备注 Stack trace Ctrl+Alt+S Search
窗口名称 快捷键 备注 Next code Alt+C Next data Ctrl+D Next explored Ctrl+A Next unexplored Ctrl+U Immediate value Alt+I Next immediate value Ctrl+I Text Alt+T Next text Ctrl+T Sequence of bytes Alt+B Next sequence of bytes Ctrl+B Not function Alt+U Next void Ctrl+V Error operand Ctrl+F Graphing
窗口名称 快捷键 备注 Flow chart F12 Function calls Ctrl+F12 Miscellaneous
窗口名称 快捷键 备注 Calculator ? Cycle through open views Ctrl+Tab Select tab Alt + [1…N] Close current view Ctrl+F4 Exit Alt+X IDC Command Shift+F2 Edit (Data Types – etc)
窗口名称 快捷键 备注 Copy Ctrl+Ins Begin selection Alt+L Manual instruction Alt+F2 Code C Data D Struct variable Alt+Q ASCII string A Array Num * Undefine U Rename N Operand Type
窗口名称 快捷键 备注 Offset (data segment) O Offset (current segment) Ctrl+O Offset by (any segment) Alt+R Offset (user-defined) Ctrl+R Offset (struct) T Number (default) # Hexadecimal Q Decimal H Binary B Character R Segment S Enum member M Stack variable K Change sign Underscore (_) Bitwise negate ~ Manual _ Alt+F1 Comments
窗口名称 快捷键 备注 Enter comment : Enter repeatable comment ; Enter anterior lines Ins Enter posterior lines Shift+Ins Insert predefined comment Shift+F1 Segments
窗口名称 快捷键 备注 Edit segment Alt+S Change segment register value Alt+G Structs
窗口名称 快捷键 备注 Struct var Alt+Q Force zero offset field Ctrl+Z Select union member Alt+Y Functions
窗口名称 快捷键 备注 Create function P Edit function Alt+P Set function end E Stack variables Ctrl+K Change stack pointer Alt+K Rename register V Set function type Y Note:
1. IDA不提供撤销功能,如果不小心按下某键,导致IDB数据库文件发生意外,是无法进行回退操作的。 PEID
扫描模式编辑
●正常扫描模式:可在PE文档的入口点扫描所有记录的签名;
●深度扫描模式:可深入扫描所有记录的签名,这种模式要比上一种的扫描范围更广、更深入;
●核心扫描模式:可完整地扫描整个PE文档,建议将此模式作为最后的选择。PEiD内置有差错控制的技术,所以一般能确保扫描结果的准确性。前两种扫描模式几乎在瞬间就可得到结果,最后一种有点慢,原因显而易见。 REFERENCE
IDA使用初探-1.启动IDA
OD和IDA快捷键
movsx 和movzx
IDIV
汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?