《逆向工程核心原理》读书笔记
文章平均质量分 88
《逆向工程核心原理》读书笔记
大灬白
没有绝对安全的系统
展开
-
第十七章-序列号生成算法分析-Part2
接下来我们分析Canasta 5.0这个CrackMe。Delphi是使用Pascal语言该CrackMe属于那种OK按钮开始不可用,当用户输入的用户名与序列号相匹配的时候才可以单击的例子。我们首先安装程序,然后用OD打开canasta.exe,程序停在:之后运行程序,打开About对话框,之后单击Enter License按钮:提示说只有当用户输入的用户名和序列号组合正确时,OK按钮才会变为可用。这样我们就没办法通过在GetDlgItemTextA等获取用户输入的文本的函数下断点的方式,找原创 2021-08-29 10:56:47 · 486 阅读 · 0 评论 -
第十六章-序列号生成算法分析-Part1
步骤:1、查看CrackMe程序信息2、使用OllyDbg加载CrackMe程序3、GetDlgItemTextA函数设置一个内存断点4、读取输入的序列号的位置5、输入的序列号的值6、输入的序列号计算的值保存在eax寄存器7、程序的计算逻辑8、计算输入的用户名9、验证输入的用户名字符串10、输入的用户名的值11、完整的用户名和序列号的比较逻辑12、用户名和序列号的注册机序列号是基于名称变化的,也就是说我们将讨论序列号生成算法。1、查看CrackMe程序信息先运行一下CrackMe程序:有File、原创 2021-08-26 22:30:41 · 1813 阅读 · 2 评论 -
《逆向工程核心原理》读书笔记——第15章 调试UPX压缩的notepad程序
第15章 调试UPX压缩的notepad程序15.1 notepad.exe的EP代码15.2 notepad_upx.exe的EP代码15.3 跟踪UPX文件15.3.1 OllyDbg的跟踪命令15.3.2 循环#115.3.3 循环#215.3.4 循环 #315.3.5 循环 #415.4 快速查找UPX OEP的方法15.4.1 在POPAD指令后的JMP指令处设置断点15.4.2 在栈中设置硬件断点 本章将调试UPX压缩的notepad_upx.exe程序, 进一步了解运行时压缩的相关概念。原创 2021-10-21 16:22:40 · 770 阅读 · 0 评论 -
《逆向工程核心原理》读书笔记——第14章 运行时压缩
第14章 运行时压缩14.3 运行时压缩测试比较notepad.exe 与notepad_upx.exe文件14.3 运行时压缩测试本节将以notepad.exe为例进行运行时压缩测试。提示本节示例使用的是Windows XP SP3中的notepad.exe程序。我使用的压缩器为UPX,它操作简单、功能强大,且完全免费,受到很多人的青睐。进入https://upx.sourceforge.net网站,下载“Win32 Console Version”版upx-3.96-win32.zip后在命原创 2021-10-13 19:56:13 · 257 阅读 · 0 评论 -
《逆向工程核心原理》读书笔记——第7章 栈帧
第7章 栈帧7.1栈帧7.2调试示例:stackframe.exe7.2.1 StackFrame.cpp7.2.2开始执行main()函数&生成栈帧7.2.3 设置局部变量7.2.4 add()函数参数传递与调用7.2.5 开始执行add()函数&生成栈帧7.2.6设置 add()函数的局部变量(x, y)7.2.7 ADD 运算7.2.8删除 函数add()的栈帧&函数执行完毕(返回)7.2.9从栈中删除函数add()的参数(整理栈)7.2.10调用printf()函数7.2.1原创 2021-09-20 12:59:27 · 1156 阅读 · 1 评论 -
《逆向工程核心原理》读书笔记——第10章 函数调用约定
第10章10.1函数调用约定10.1.1 cdecl10.1.2 stdcall10.1.3 fastcall其他几种类型:本章学习函数调用约定( Calling Convention)的相关知识。10.1函数调用约定 Calling Convention译成中文是“函数调用约定”,它是对函数调用时如何传递参数的一种约定。我们通过前面的学习已经知道,调用函数前要先把参数压入栈然后再传递给函数。栈就是定义在进程中的一段内存空间,向下(低地址方向)扩展,且其大小被记录在PE头中。也就是说,进程运行时确定原创 2021-09-18 14:10:56 · 247 阅读 · 0 评论 -
《逆向工程核心原理》读书笔记——第8章 Visual Basic编写的exe程序特征
第8章8.1运行abex'crackme #28.2 Visual Basic文件的特征8.2.1 VB专用引擎8.2.2 本地代码和伪代码8.2.3 事件处理程序8.2.4 未文档化的结构体8.3开始调试8.3.1 间接调用8.3.2 RT_MainStruct结构体8.3.3 ThunRTMain()函数 本章分析第二个crackme文件abex’crackme #2,它使用Visual Basic语言编写,你会感受到与使用Visual C++或Assembly编写的文件相比具有不同的形态。 3原创 2021-09-17 10:36:52 · 822 阅读 · 0 评论 -
《逆向工程核心原理》读书笔记——第6章 汇编编写的exe程序入口
第6章一级目录6.1abex' crackme #16.1.1 开始调试6.3 将参数压入栈一级目录6.1abex’ crackme #1 调试前先运行abex’crackme #1这个程序,大致了解一下它。如图6-1所示,双击运行程序后弹出一个消息窗口,显示“Make me think your HD is a CD-Rom"消息。我刚开始并不理解这句英文。图6-1运行程序 消息的最后部分出现了“CD-Rom”这个词,我们只能根据它大致推测出前面的HD为HDD(Hard Disk Dri原创 2021-09-15 16:58:26 · 519 阅读 · 0 评论 -
《逆向工程核心原理》读书笔记——第5章 栈
第5章 栈一级目录5.1 栈5.1.1 栈的特征5.1.2栈操作示例一级目录5.1 栈栈内存在进程中的作用如下: (1)暂时保存函数内的局部变量。 (2)调用函数时传递参数。 (3)保存函数返回后的地址。 栈其实是一种数据结构,它按照FILO (First In Last Out,后进先出)的原则存储数据。后面会通过一个示例向大家证明这一点。5.1.1 栈的特征栈内存的结构一般如图5-1所示,下面简单讲解一下。 一个进程中,栈顶指针(ESP)初始状态指向栈底端。执行PUSH命原创 2021-09-15 11:08:17 · 306 阅读 · 0 评论 -
《逆向工程核心原理》读书笔记——第4章 IA-32寄存器基本讲解
第4章 IA-32寄存器基本讲解4.IA-32寄存器1.通用寄存器2.段寄存器3.程序状态与控制寄存器4.指令指针寄存器4.IA-32寄存器 IA-32是英特尔推出的32位元架构,属于复杂的指令集架构,并且支持多种寄存器。下面列出了IA-32支持的寄存器类型。 以上寄存器列表中,我们先要学习基本程序运行寄存器的相关内容,这是程序调试中最常见的寄存器,是学习程序调试初级技术必须掌握的内容。后面学习中、高级程序调试技术时,我们将继续学习有关控制寄存器(Control registers )、内存管理原创 2021-09-13 16:02:56 · 1032 阅读 · 0 评论