Site updated: 2019-03-28 21:30:41
This commit is contained in:
parent
860a91d5c5
commit
dac9b20121
@ -93,7 +93,7 @@
|
||||
<meta property="og:image" content="https://res.cloudinary.com/dozyfkbg3/image/upload/v1553775053/%E8%BD%AF%E4%BB%B6%E7%A0%B4%E8%A7%A3/%E6%8D%95%E8%8E%B74.png">
|
||||
<meta property="og:image" content="https://res.cloudinary.com/dozyfkbg3/image/upload/v1553775817/%E8%BD%AF%E4%BB%B6%E7%A0%B4%E8%A7%A3/%E6%8D%95%E8%8E%B75.png">
|
||||
<meta property="og:image" content="https://res.cloudinary.com/dozyfkbg3/image/upload/v1553776239/%E8%BD%AF%E4%BB%B6%E7%A0%B4%E8%A7%A3/%E6%8D%95%E8%8E%B76.png">
|
||||
<meta property="og:updated_time" content="2019-03-28T13:28:37.246Z">
|
||||
<meta property="og:updated_time" content="2019-03-28T13:30:31.031Z">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="逆向工程实验">
|
||||
<meta name="twitter:description" content="软件保护方式 功能限制 时间限制 运行时长限制 使用日期限制 使用次数限制 警告窗口 分析工具 静态分析工具 IDA W32Dasm lordPE Resource Hacker 动态分析工具 OllyDbg WinDbg 对抗分析技术 反静态分析技术 花指令 自修改代码技术 多态技术 变形技术 虚拟机保护技术 反动态分析技术 检测调试状态 检测用户态调试器">
|
||||
@ -506,7 +506,7 @@
|
||||
<li>使调试器窗口不可用</li>
|
||||
<li>终止调试器进程</li>
|
||||
</ul>
|
||||
<h1 id="PE文件格式基础"><a href="#PE文件格式基础" class="headerlink" title="PE文件格式基础"></a>PE文件格式基础</h1><h1 id="加壳脱壳"><a href="#加壳脱壳" class="headerlink" title="加壳脱壳"></a>加壳脱壳</h1><h1 id="实验1:软件破解"><a href="#实验1:软件破解" class="headerlink" title="实验1:软件破解"></a>实验1:软件破解</h1><h2 id="对象"><a href="#对象" class="headerlink" title="对象"></a>对象</h2><p><a href="https://res.cloudinary.com/dozyfkbg3/raw/upload/v1553761280/%E8%BD%AF%E4%BB%B6%E7%A0%B4%E8%A7%A3/crack.exe1" target="_blank" rel="noopener">crack.exe</a>,28.0 KB</p>
|
||||
<h1 id="PE文件格式基础"><a href="#PE文件格式基础" class="headerlink" title="PE文件格式基础"></a>PE文件格式基础</h1><h1 id="加壳脱壳"><a href="#加壳脱壳" class="headerlink" title="加壳脱壳"></a>加壳脱壳</h1><h1 id="实验一:软件破解"><a href="#实验一:软件破解" class="headerlink" title="实验一:软件破解"></a>实验一:软件破解</h1><h2 id="对象"><a href="#对象" class="headerlink" title="对象"></a>对象</h2><p><a href="https://res.cloudinary.com/dozyfkbg3/raw/upload/v1553761280/%E8%BD%AF%E4%BB%B6%E7%A0%B4%E8%A7%A3/crack.exe1" target="_blank" rel="noopener">crack.exe</a>,28.0 KB</p>
|
||||
<ul>
|
||||
<li>无保护措施:无壳、未加密、无反调试措施</li>
|
||||
<li>用户名至少要5个字节</li>
|
||||
@ -779,7 +779,7 @@
|
||||
|
||||
|
||||
|
||||
<div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#软件保护方式"><span class="nav-number">1.</span> <span class="nav-text">软件保护方式</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#分析工具"><span class="nav-number">2.</span> <span class="nav-text">分析工具</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#对抗分析技术"><span class="nav-number">3.</span> <span class="nav-text">对抗分析技术</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#PE文件格式基础"><span class="nav-number">4.</span> <span class="nav-text">PE文件格式基础</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#加壳脱壳"><span class="nav-number">5.</span> <span class="nav-text">加壳脱壳</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#实验1:软件破解"><span class="nav-number">6.</span> <span class="nav-text">实验1:软件破解</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#对象"><span class="nav-number">6.1.</span> <span class="nav-text">对象</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#爆破"><span class="nav-number">6.2.</span> <span class="nav-text">爆破</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#查找显示注册结果相关代码"><span class="nav-number">6.2.1.</span> <span class="nav-text">查找显示注册结果相关代码</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#查找注册码验证相关代码"><span class="nav-number">6.2.2.</span> <span class="nav-text">查找注册码验证相关代码</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#修改程序跳转"><span class="nav-number">6.2.3.</span> <span class="nav-text">修改程序跳转</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#编写注册机"><span class="nav-number">6.3.</span> <span class="nav-text">编写注册机</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#查找显示注册结果相关代码-1"><span class="nav-number">6.3.1.</span> <span class="nav-text">查找显示注册结果相关代码</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#查找注册码验证相关代码-1"><span class="nav-number">6.3.2.</span> <span class="nav-text">查找注册码验证相关代码</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#根据注册码验证代码编写注册机"><span class="nav-number">6.3.3.</span> <span class="nav-text">根据注册码验证代码编写注册机</span></a></li></ol></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#实验二:软件反动态调试技术分析"><span class="nav-number">7.</span> <span class="nav-text">实验二:软件反动态调试技术分析</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#对象-1"><span class="nav-number">7.1.</span> <span class="nav-text">对象</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#要求"><span class="nav-number">7.2.</span> <span class="nav-text">要求</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#实验三:加花加密反调试技术分析"><span class="nav-number">8.</span> <span class="nav-text">实验三:加花加密反调试技术分析</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#对象-2"><span class="nav-number">8.1.</span> <span class="nav-text">对象</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#内容"><span class="nav-number">8.2.</span> <span class="nav-text">内容</span></a></li></ol></li></ol></div>
|
||||
<div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#软件保护方式"><span class="nav-number">1.</span> <span class="nav-text">软件保护方式</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#分析工具"><span class="nav-number">2.</span> <span class="nav-text">分析工具</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#对抗分析技术"><span class="nav-number">3.</span> <span class="nav-text">对抗分析技术</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#PE文件格式基础"><span class="nav-number">4.</span> <span class="nav-text">PE文件格式基础</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#加壳脱壳"><span class="nav-number">5.</span> <span class="nav-text">加壳脱壳</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#实验一:软件破解"><span class="nav-number">6.</span> <span class="nav-text">实验一:软件破解</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#对象"><span class="nav-number">6.1.</span> <span class="nav-text">对象</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#爆破"><span class="nav-number">6.2.</span> <span class="nav-text">爆破</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#查找显示注册结果相关代码"><span class="nav-number">6.2.1.</span> <span class="nav-text">查找显示注册结果相关代码</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#查找注册码验证相关代码"><span class="nav-number">6.2.2.</span> <span class="nav-text">查找注册码验证相关代码</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#修改程序跳转"><span class="nav-number">6.2.3.</span> <span class="nav-text">修改程序跳转</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#编写注册机"><span class="nav-number">6.3.</span> <span class="nav-text">编写注册机</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#查找显示注册结果相关代码-1"><span class="nav-number">6.3.1.</span> <span class="nav-text">查找显示注册结果相关代码</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#查找注册码验证相关代码-1"><span class="nav-number">6.3.2.</span> <span class="nav-text">查找注册码验证相关代码</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#根据注册码验证代码编写注册机"><span class="nav-number">6.3.3.</span> <span class="nav-text">根据注册码验证代码编写注册机</span></a></li></ol></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#实验二:软件反动态调试技术分析"><span class="nav-number">7.</span> <span class="nav-text">实验二:软件反动态调试技术分析</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#对象-1"><span class="nav-number">7.1.</span> <span class="nav-text">对象</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#要求"><span class="nav-number">7.2.</span> <span class="nav-text">要求</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#实验三:加花加密反调试技术分析"><span class="nav-number">8.</span> <span class="nav-text">实验三:加花加密反调试技术分析</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#对象-2"><span class="nav-number">8.1.</span> <span class="nav-text">对象</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#内容"><span class="nav-number">8.2.</span> <span class="nav-text">内容</span></a></li></ol></li></ol></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<entry>
|
||||
<title><![CDATA[逆向工程实验]]></title>
|
||||
<url>%2F2019%2F03%2F28%2F%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B%E5%AE%9E%E9%AA%8C%2F</url>
|
||||
<content type="text"><![CDATA[软件保护方式 功能限制 时间限制 运行时长限制 使用日期限制 使用次数限制 警告窗口 分析工具 静态分析工具 IDA W32Dasm lordPE Resource Hacker 动态分析工具 OllyDbg WinDbg 对抗分析技术 反静态分析技术 花指令 自修改代码技术 多态技术 变形技术 虚拟机保护技术 反动态分析技术 检测调试状态 检测用户态调试器 检测内核态调试器 其他方法:父进程检测;StartupInfo 结构;时间差;通过Trap Flag检测 发现调试器后的处理 程序自身退出 向调试器窗口发送消息使调试器退出 使调试器窗口不可用 终止调试器进程 PE文件格式基础加壳脱壳实验1:软件破解对象crack.exe,28.0 KB 无保护措施:无壳、未加密、无反调试措施 用户名至少要5个字节 输入错误验证码时输出:“Bad Boy!” 爆破查找显示注册结果相关代码当输入错误验证码时,程序会输出“Bad Boy”,因此我们将程序拖入IDA,以流程图显示函数内部的跳转。查找“Bad Boy”字符串,我们可以定位到显示注册结果的相关代码: 查找注册码验证相关代码用鼠标选中程序分支点,按空格切换回汇编指令界面 可以看到,这条指令位于PE文件的.text节,并且IDA已经自动将地址转换为运行时的内存地址VA:004010F9 修改程序跳转 现在关闭IDA,换用OllyDbg进行动态调试来看看程序时如何分支跳转的Ctrl+G直接跳到由IDA得到的VA:004010F9处查看那条引起程序分支的关键指令 选中这条指令,按F2设置断点,再按F9运行程序,这时候控制权会回到程序,OllyDbg暂时挂起。到程序提示输入名字和序列号,随意输入(名字大于五个字节),点击ok后,OllyDbg会重新中断程序,收回控制权,如图: 验证函数的返回值存于EAX寄存器中,if语句通过以下两条指令执行 12cmp eax,ecxjnz xxxxxxx 也就是说,当序列号输入错误时,EAX中的值为0,跳转将被执行。如果我们把jnz这条指令修改为jz,那么整个程序的逻辑就会反过来。双击jnz这条指令,将其改为jz,单击”汇编”将其写入内存可以看到此时程序执行了相反的路径 上面只是在内存中修改程序,我们还需要在二进制文件中也修改相应的字节,这里考察VA与文件地址之间的关系 用LordPE打开.exe文件,查看PE文件的节信息根据VA与文件地址的换算公式:123文件偏移地址 = VA - Image Base - 节偏移 = 0x004010F9 - 0x00400000 - 0 = 0x10F9 也就是说,这条指令在PE文件中位于10F9字节处,使用010Editer打开crack.exe,将这一字节的75(JNZ)改为74(JZ),保存后重新执行,破解成功! 编写注册机查找显示注册结果相关代码查找注册码验证相关代码根据注册码验证代码编写注册机实验二:软件反动态调试技术分析对象CrackMe1.exe 1641.0 KB无保护措施:无壳、未加密、无反调试措施使用OllyDbg对该程序进行调试时,程序会自动退出 要求 分析CrackMe1.exe是如何通过父进程检测实现反OllyDbg调试的 分析除父进程检测外,该程序用到的反动态调试技术 实验三:加花加密反调试技术分析对象CrackMe2.exe 9.00 KB保护措施:部分加花、部分加密、简单反调试根据(提示)[https://res.cloudinary.com/dozyfkbg3/raw/upload/v1553779403/%E8%BD%AF%E4%BB%B6%E7%A0%B4%E8%A7%A3/Crackme2%E6%8F%90%E7%A4%BA.docx]分析该程序 内容 加壳脱壳深入理解 尝试手动脱壳 分析CrackMe2.exe中花指令 分析CrackMe2.exe中的被加密的函数的功能 分析CrackMe2.exe中的反调试手段 分析CrackMe2.exe中混合的64位代码的功能]]></content>
|
||||
<content type="text"><![CDATA[软件保护方式 功能限制 时间限制 运行时长限制 使用日期限制 使用次数限制 警告窗口 分析工具 静态分析工具 IDA W32Dasm lordPE Resource Hacker 动态分析工具 OllyDbg WinDbg 对抗分析技术 反静态分析技术 花指令 自修改代码技术 多态技术 变形技术 虚拟机保护技术 反动态分析技术 检测调试状态 检测用户态调试器 检测内核态调试器 其他方法:父进程检测;StartupInfo 结构;时间差;通过Trap Flag检测 发现调试器后的处理 程序自身退出 向调试器窗口发送消息使调试器退出 使调试器窗口不可用 终止调试器进程 PE文件格式基础加壳脱壳实验一:软件破解对象crack.exe,28.0 KB 无保护措施:无壳、未加密、无反调试措施 用户名至少要5个字节 输入错误验证码时输出:“Bad Boy!” 爆破查找显示注册结果相关代码当输入错误验证码时,程序会输出“Bad Boy”,因此我们将程序拖入IDA,以流程图显示函数内部的跳转。查找“Bad Boy”字符串,我们可以定位到显示注册结果的相关代码: 查找注册码验证相关代码用鼠标选中程序分支点,按空格切换回汇编指令界面 可以看到,这条指令位于PE文件的.text节,并且IDA已经自动将地址转换为运行时的内存地址VA:004010F9 修改程序跳转 现在关闭IDA,换用OllyDbg进行动态调试来看看程序时如何分支跳转的Ctrl+G直接跳到由IDA得到的VA:004010F9处查看那条引起程序分支的关键指令 选中这条指令,按F2设置断点,再按F9运行程序,这时候控制权会回到程序,OllyDbg暂时挂起。到程序提示输入名字和序列号,随意输入(名字大于五个字节),点击ok后,OllyDbg会重新中断程序,收回控制权,如图: 验证函数的返回值存于EAX寄存器中,if语句通过以下两条指令执行 12cmp eax,ecxjnz xxxxxxx 也就是说,当序列号输入错误时,EAX中的值为0,跳转将被执行。如果我们把jnz这条指令修改为jz,那么整个程序的逻辑就会反过来。双击jnz这条指令,将其改为jz,单击”汇编”将其写入内存可以看到此时程序执行了相反的路径 上面只是在内存中修改程序,我们还需要在二进制文件中也修改相应的字节,这里考察VA与文件地址之间的关系 用LordPE打开.exe文件,查看PE文件的节信息根据VA与文件地址的换算公式:123文件偏移地址 = VA - Image Base - 节偏移 = 0x004010F9 - 0x00400000 - 0 = 0x10F9 也就是说,这条指令在PE文件中位于10F9字节处,使用010Editer打开crack.exe,将这一字节的75(JNZ)改为74(JZ),保存后重新执行,破解成功! 编写注册机查找显示注册结果相关代码查找注册码验证相关代码根据注册码验证代码编写注册机实验二:软件反动态调试技术分析对象CrackMe1.exe 1641.0 KB无保护措施:无壳、未加密、无反调试措施使用OllyDbg对该程序进行调试时,程序会自动退出 要求 分析CrackMe1.exe是如何通过父进程检测实现反OllyDbg调试的 分析除父进程检测外,该程序用到的反动态调试技术 实验三:加花加密反调试技术分析对象CrackMe2.exe 9.00 KB保护措施:部分加花、部分加密、简单反调试根据(提示)[https://res.cloudinary.com/dozyfkbg3/raw/upload/v1553779403/%E8%BD%AF%E4%BB%B6%E7%A0%B4%E8%A7%A3/Crackme2%E6%8F%90%E7%A4%BA.docx]分析该程序 内容 加壳脱壳深入理解 尝试手动脱壳 分析CrackMe2.exe中花指令 分析CrackMe2.exe中的被加密的函数的功能 分析CrackMe2.exe中的反调试手段 分析CrackMe2.exe中混合的64位代码的功能]]></content>
|
||||
<categories>
|
||||
<category>-二进制</category>
|
||||
</categories>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<url>
|
||||
<loc>https://cool-y.github.io/2019/03/28/%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B%E5%AE%9E%E9%AA%8C/</loc>
|
||||
|
||||
<lastmod>2019-03-28T13:28:37.246Z</lastmod>
|
||||
<lastmod>2019-03-28T13:30:31.031Z</lastmod>
|
||||
|
||||
</url>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user