OD 实验(二十) - 对反调试程序的逆向分析(一)
程序:

Keyfile.dat 里的内容

该文件中要至少有 9 个
ReverseMe.A:
运行程序

用 OD 打开该程序,运行

弹出的是错误的对话框
该程序发现 OD 对它的调试,所以该程序对 OD 进行反调试
重新载入程序,按 F8 往下走

这个循环是对 Keyfile.dat 的内容进行判断的
循环过来,来到一个 call 语句

执行该 call 语句就会弹出那个弹窗

这个 call 指令调用的函数就在下面

这个地方调用了一个 IsDebuggerPresent 函数
该函数判断程序进程是否由用户模式的调试器调试,如果当前进程在调试器中,返回值为非零值,如果当前进程不在调试器中,返回值为零
按 F8 往下走

返回值 eax 的值为 1,是非零

然后执行跳转,跳到弹出是错误的对话框
Reverse.B:
运行程序

用 OD 载入程序,运行

程序运行到该处会暂停,再运行

程序就终止了
重新载入程序,按 F8 一步一步往下走

这里还是执行了 call 指令

调用 IsDebuggerPresent 函数
接着往下走

把 esp 给 401121
继续运行程序,程序就终止了
Reverse.C:
运行程序

用 OD 载入程序,运行

程序直接终止了
重新载入程序,按 F8 往下走

执行 call 指令之后会先用 IsDebuggerPresent 函数进行判断是否被反调试

eax 的值为 1,执行跳转,然后执行 ExitProcess 函数退出程序
Reverse.D:
运行程序

用 OD 载入程序,运行

重新载入程序,按 F8 往下走

这里 eax 为 1 的话,跳转到 jmp eax 这
此时 eax 的值为 1,jmp eax 跳转到此处的话肯定会出错
OD 实验(二十) - 对反调试程序的逆向分析(一)的更多相关文章
- OD 实验(二十一) - 对反调试程序的逆向分析(二)
程序: 运行程序 点击“Verify” 关闭该程序,启动 OD 再运行程序 逆向: 用 OD 载入程序 按 F8 往下走 执行完这个 call 指令就弹出了对话框 这个 call 指令调用了 Dial ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十:SDRAM模块③ — 页读写 α
实验二十:SDRAM模块③ — 页读写 α 完成单字读写与多字读写以后,接下来我们要实验页读写.丑话当前,实验二十的页读写只是实验性质的东西,其中不存在任何实用价值,笔者希望读者可以把它当成页读写的热 ...
- 【iCore3 双核心板_FPGA】实验二十八:基于SDRAM 的VGA 驱动器的设计
本实验设计的VGA显示驱动完全基于FPGA实现,用SDRAM做缓存设备,通过ARM控制VGA显示的内容.ARM 通过FSMC总线向FPGA发送数据,由于总线的速度和VGA的显示速度与SDRAM的读写速 ...
- 【iCore3 双核心板_FPGA】实验二十六:SDRAM读写测试实验
实验指导书及代码包下载: http://pan.baidu.com/s/1c1VRibY iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore3 双核心板_FPGA】实验二十五:NIOS II之UART串口通信实验
实验指导书及代码包下载: http://pan.baidu.com/s/1eRMZq18 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore3 双核心板_FPGA】实验二十:基于FIFO的ARM+FPGA数据存取实验
实验指导书及代码包下载: http://pan.baidu.com/s/1cmisnO iCore3 购买链接: https://item.taobao.com/item.htm?id=5242294 ...
- 【iCore3 双核心板_FPGA】实验二十二:Niosii——固化程序到 EPCS 里
实验指导书及代码包下载: http://pan.baidu.com/s/1c2lyNQS iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore3 双核心板_FPGA】实验二十四:Niosii——SDRAM读写实验
实验指导书及代码包下载: http://pan.baidu.com/s/1c2xAJT2 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- OD 实验(二) - 绕过序列号验证
需要破解的程序 输入用户名和序列号,点击 Check,程序会进行校验 用 OD 打开程序 按快捷键 Ctrl+F9 跟随表达式 GetDlgItemTextA 点击 ok 在这里调用了 GetDlgI ...
随机推荐
- Kotlin Reference (一) Basic Syntax
什么是Kotlin Kotlin翻译成中文叫"靠他灵",它是由JetBrains公司发明的一种基于JVM的编程语言,目前Google宣布kotlin为Android开发的官方语言. ...
- Android组件化开发实践
转载请注明出处:http://blog.csdn.net/crazy1235/article/details/76533115 http://mdsa.51cto.com/art/201707/544 ...
- IOS开发 多线程编程 - NSOperation
一.NSOperation 1.简介 NSOperation实例封装了需要执行的操作和执行操作所需的数据,并且能够以并发或非并发的方式执行这个操作. NSOperation本身是抽象基类,因此必须使用 ...
- 我在ubuntu14.04安装使用的软件
搜狗拼音sougoupinyin:sudo add-apt-repository ppa:fcitx-team/nightly && sudo apt-get updatesudo a ...
- MQ 发布/订阅者模式
package com.chauvet.utils.mq.topic; import javax.jms.DeliveryMode; import javax.jms.JMSException; im ...
- bzoj1089严格n元树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1089 这是一种套路:记录“深度为 i ”的话,转移需要讨论许多情况:所以可以记录成“深度&l ...
- ABP学习之路
ABP文档介绍 http://www.cnblogs.com/kid1412/p/AbpDocumentContent.html [ABP开源项目]--vue+vuex+vue-router+EF的权 ...
- NETCTOSS - 中国电信运营支持系统-网络版_V-1.0
NETCTOSS - 中国电信运营支持系统-网络版_V-1.0 NETCTOSS: C:China T:Telecom 电信 O:Operation 运营 S:Support 支持 S:System ...
- laravel的blade模板的布局嵌套
测试路由 Route::get('/', function() { $value = [,,]; return view('home.index', array('data' => $value ...
- advapi32.dll kernel32.dll 中的两套注册表API
日前遇到一件事:WebBrowser中的网页会用到一个“大众”ActiveX控件,为了保证兼容性以及和其它程序互不干扰,我们采用这样一种方案: 1. 我们的软件会自带该控件: 2. 如果系统中已注册有 ...