IDA系列教程:IDA加载器
VIEW-OPEN SUBVIEW-SEGMENTS 加载段 可以看到程序段自动加载! 但是头部却没有加载! Start End是开始和结束地址! R可读 W可写 X(EXECUTION)可执行 D(DEBUGGER) L(LOADER) D是以调试器模式加载程序并显示加载的段时被调用。 L显示加载器加载的内容和其他不太重要的列. 如果想要加载头,那……
IDA系列教程:基于堆栈传输特定指令
什么是堆栈? 堆栈是一个内存部分,其中的访问模式为FILO,表示先进先出。 它允许保存和恢复数据。对于数据处理,有两个基本操作: PUSH将对象放置在堆栈上,其反操作POP取出最后被压入的元素。 在任何时候,它只能访问堆栈的顶部或最后推送的对象 通常,在32位中,PUSH用于在调用CALL之前将函数参数发送到堆栈 PUSH 64将dword 64放在堆栈的……
IDA系列教程:sp-analysis failed
某些函数在使用 f5 进行反编译时,会提示错误 “sp-analysis failed”,导致无法正确反编译。原因可能是在代码执行中的 pop、push 操作不匹配,导致解析的时候 esp 发生错误。 解决办法步骤如下: 用 Option->General->Disassembly, 将选项 Stack pointer 打钩 仔细观察每条 ca……
IDA系列教程:local variable allocation failed
此错误消息意味着反编译器无法使用寄存器和堆栈位置分配本地变量。 只有在配置文件中启用了HO_IGNORE_OVERLAPS之后,才会看到这个错误消息。如果输出中允许有重叠的变量,则以红色显示。 请检查所有相关功能的原型,包括当前的功能。变量类型和定义也可能导致此错误。 更新函数堆栈帧并创建正确的堆栈变量也可以帮助解决这个问题。 如果在对函数类型或变量类型进行……
恶意代码分析实战:第十二章 隐蔽的恶意代码启动
为了隐藏自身,恶意代码的编写者开发了多种技术,将恶意代码混淆到正常的Windoes资源空间中。 1. 启动器 启动器也叫加载器,是一种设置自身或其他恶意代码片段以达到即时或将来秘密运行恶意代码。启动器目的是安装一些东西,以使恶意行为对用户隐藏。 启动器通常包含它要加载的恶意代码,最常见情况是在它的资源节中包含一个可执行文件或者DLL。如果资源节被压缩或者加密……
恶意代码分析实战:第十九章 shellcode分析
shellcode是指一个原始可执行代码得有效载荷,原意是攻击者会使用这段代码获得被攻陷系统上交互式shell的访问权限。 1. 加载shellcode分析 可执行代码块,必须有载荷加载shellcode才能运行 2. 位置无关代码 位置无关代码(PIC)是指不使用硬编码地址来寻址指令或数据的代码。它不能假设自己再执行时会被加载到一个特定的内存中。 以下是几……
恶意代码分析实战:第七章 分析恶意Windows程序
多数恶意代码以Windows平台为目标,并且与操作系统进行紧密交互。 1 Windows API 恶意代码调用适当windows api即可完成恶意功能。 1.1 类型和匈牙利表达法 Windows总体上使用匈牙利表达法,作为API的函数标识符。这个表达式使用前缀命名模式。比如virtualAllocEx函数的第三个参数是dwSize,这是一个DWORD类型……
IDA系列教程:IDA Python
参考资料 Alex Hanel写的电子书:https://leanpub.com/IDAPython-Book Magic Lantern写的:https://magiclantern.fandom.com/wiki/IDAPython IDAPython 由三个独立模块组成。 第一个是 idc,它是封装 IDA 的 IDC 函数的兼容性模块。……
IDA系列教程:堆栈平衡原理与手动恢复平衡
1. 背景 调试样本时发现在某个函数时不能F5,显示positive sp value has been found。初步断定是因为堆栈不平衡导致的,因此需恢复堆栈平衡。 2. 恢复堆栈平衡 IDA->Option->General->Disassembly 勾选stack pointer,打开栈指针显示。 双击左下角output wi……