随笔分类 - 逆向工程
摘要:程序: 这里有很多的动态链接库 双击运行程序 这个程序有次数限制 按钮也在隐藏处 主界面 退出程序,会弹出一个广告 目的: 让程序的使用次数不受限制,且没有显示次数的窗口 去除程序关闭时候的广告 逆向: 修改次数限制: 用 OD 打开程序 按 F8 走一下程序 程序在这里走到了一个循环,程序会在这个
阅读全文
摘要:程序: 双击进行安装,安装过程默认就好了 安装完成 运行程序 输入 User 为 sch01ar,点击 Create 点击 Log In 这里显示为未注册版本 看看未注册版本有哪些功能被限制 这里会显示这个是未注册的版本,要在今天注册 最多只能创建 3 个组 每个组最多只能添加四个联系人 目标: 修
阅读全文
摘要:载入程序,按 Alt+M 查看内存空间 双击进入程序的 PE 头 这些为 DOS 环境下才会运行的 这个执行 PE 的地址,PE 结构的偏移地址为 C0 找到这个地址 以 PE 开头 SizeOfCode 为代码段的大小 SizeOfInitializedData 为所有含已初始化数据的块的大小 这
阅读全文
摘要:程序: 运行 弹出一个窗口,说要注册 点击确定,到主窗口 关闭主窗口 然后弹出提醒注册的对话框 逆向程序 用 OD 打开程序 GetModuleHandleA 获取程序模块的句柄,程序在内存中的基址 内存中的一个模块代表一个可执行文件进程所需要的所有代码、数据、资源的集合 GetModuleHand
阅读全文
摘要:需要破解的程序 双击程序,提示需要许可证文件 逆向程序 用 OD 打开 LoadIconA 为加载图标 LoadCursorA 为加载鼠标 F8 走一下程序 走到了这里,调用了 CreateFileA,打开或创建文件 Keyfile.dat 但是当前目录没有 Keyfile.dat 文件 接下来是有
阅读全文
摘要:需要破解的程序 输入用户名和序列号,点击 Check,程序会进行校验 用 OD 打开程序 按快捷键 Ctrl+F9 跟随表达式 GetDlgItemTextA 点击 ok 在这里调用了 GetDlgItemTextA,按 F2 下一个断点 按这个 C 字母,快捷键为 Alt+C 回到程序的起始处 然
阅读全文
摘要:需要修改的程序 把 I love fishc.com 修改为 hello world sch01ar 用 OD 打开程序 在程序入口处开始一直按 F8 运行程序,看看在哪里弹出对话框 运行到该地址的时候,会弹出对话框 按 F2 在这个地址下一个断点 按 Ctrl+F2 重新载入程序,然后按 F9,运
阅读全文
摘要:F3 为加载一个可执行程序,进行调试分析 F2 为下断点 下完断点后,地址变为红色的 程序执行到断点处的时候会停下来 取消断点也是 F2 F4 为把程序执行到光标所在处 如果光标所在的位置在断点处之后,程序将会在断点处停下 F9 为运行程序,遇到断点处,程序暂停 Ctrl+F2 为重新运行程序到起始
阅读全文
摘要:1 为汇编代码对应的地址窗口 2 为汇编代码对应的十六进制机器码窗口 3 为反汇编窗口 4 为反汇编代码对应的注释信息窗口 5 为寄存器信息窗口 6 为当前执行到的反汇编代码的信息窗口 7~9 为数据所在的内存地址,十六进制,ASCII 码 10~12 为栈地址,存放的数据,对应说明信息 13 为
阅读全文
摘要:IDA 无法定位一个函数调用,由于没有直接的方法到达函数,IDA 将无法识别它们 IDA 可能无法正确确定函数的结束部分,需要手动干预,以更正反汇编代码中的错误 如果编译器已经将函数分割到几个地址范围,或者在优化代码的过程中,编译器为节省空间,将两个或几个函数的共同结束序列合并在一起,这时 IDA
阅读全文
摘要:IDA提供的代码转换包括: 1.将数据转换为代码 2.将代码转换为数据 3.指定一个指令序列为函数 4.更改现有函数的起始或结束地址 5.更改指令操作数的显示格式 代码显示选项 通过 Options -> General 命令打开“IDA Options”对话框,并选择“Disassembly”选项
阅读全文
摘要:注释有助于以一种更高级的方式描述汇编语言指令序列 IDA 提供了几种不同类型的注释,每种注释适用于不同的目的 使用 Edit -> Comments 命令的选项,可以为反汇编代码清单中的任何一行代码添加注释 这是一个 scanf() 函数 某一行分号之后的内容都是注释 常规注释 常规注释位于现有汇编
阅读全文
摘要:多数情况下,要修改一个名称,只需单击想要修改的名称(使其突出显示),并使用快捷键 N 打开更名对话框 右击需要修改的名称,并在出现的上下文菜单中选择 Rename 选项,也可以更改名称 参数和局部变量 程序中的每个函数可能都有一个名为 arg_0 的栈变量,但没有一个函数拥有一个以上的 arg_0
阅读全文
摘要:栈帧(stack frame)是在程序的运行时栈中分配的内存块,用于特定的函数调用 如果一个函数没有执行则不需要内存,当函数被调用时就需要用到内存 1.传给函数的参数的值需要存储到函数能够找到它们的位置 2.函数在执行过程中可能需要临时的存储空间,通过声明局部变量来分配这类临时空间,这些变量在函数内
阅读全文
摘要:Search -> Next Code 命令将光标移动到下一个包含指令的位置 Jump -> Jump to Function 命令可以打开所有函数,可以迅速选择一个函数并导航到该函数所在的位置 文本搜索 IDA 文本搜索相当于对反汇编列表窗口进行子字符串搜索 通过 Search -> Text 命
阅读全文
摘要:导航目标 在分析阶段,IDA 会通过检查二进制文件的符号表生成符号名称,或根据二进制文件引用位置的方式自动生成一个名称 反汇编窗口中显示的任何名称都是导航目标 双击任何一个符号,IDA 将跳转到相应的位置 这些是已经命名的导航目标 上面划红线的是交叉引用,也是导航目标 交叉引用通常被格式化成一个名称
阅读全文
摘要:默认情况下 IDA 不会打开这些窗口,可通过 View -> Open Subviews 命令打开 Strings 窗口(Strings) Strings 窗口中显示的是从二进制文件中提取出的一组字符串,以及每个字符串所在的地址 双击 Strings 窗口中的任何字符串,反汇编窗口和十六进制窗口将跳
阅读全文
摘要:十六进制窗口 IDA 十六进制窗口可以配置为显示各种格式,并可作为十六进制编辑器使用 默认情况下,十六进制窗口显示程序内容和列表的标准十六进制代码,每行显示 16 个字节,以及其对应的 ASCII 字符 和在反汇编窗口中一样,用户也可以同时打开几个十六进制窗口 第一个十六进制窗口叫做 Hex Vie
阅读全文
摘要:在默认配置下,IDA(从 6.1 版开始)会在对新二进制文件的初始加载和分析阶段创建 7 个显示窗口 3 个立即可见的窗口分别为 IDA-View 窗口、函数窗口和消息输出窗口 可以通过 View -> Open Subviews 菜单打开这些窗口 在 IDA 中,ESC 键是一个非常有用的热键 在
阅读全文
摘要:基本规则: IDA 不提供撤销功能 如果由于不小心按下某个键,导致数据库文件发生意外,这时需要将显示窗口恢复到以前的状态 几乎所有的操作都有其对应的菜单项、热键和工具栏按钮 IDA 的工具栏高度可配置,就像热键对菜单操作的映射一样 IDA 提供方便的、基于上下文的鼠标右键操作菜单 虽然这些菜单无法提
阅读全文