程序:

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 实验(二十) - 对反调试程序的逆向分析(一)的更多相关文章

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

    程序: 运行程序 点击“Verify” 关闭该程序,启动 OD 再运行程序 逆向: 用 OD 载入程序 按 F8 往下走 执行完这个 call 指令就弹出了对话框 这个 call 指令调用了 Dial ...

  2. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十:SDRAM模块③ — 页读写 α

    实验二十:SDRAM模块③ — 页读写 α 完成单字读写与多字读写以后,接下来我们要实验页读写.丑话当前,实验二十的页读写只是实验性质的东西,其中不存在任何实用价值,笔者希望读者可以把它当成页读写的热 ...

  3. 【iCore3 双核心板_FPGA】实验二十八:基于SDRAM 的VGA 驱动器的设计

    本实验设计的VGA显示驱动完全基于FPGA实现,用SDRAM做缓存设备,通过ARM控制VGA显示的内容.ARM 通过FSMC总线向FPGA发送数据,由于总线的速度和VGA的显示速度与SDRAM的读写速 ...

  4. 【iCore3 双核心板_FPGA】实验二十六:SDRAM读写测试实验

    实验指导书及代码包下载: http://pan.baidu.com/s/1c1VRibY iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  5. 【iCore3 双核心板_FPGA】实验二十五:NIOS II之UART串口通信实验

    实验指导书及代码包下载: http://pan.baidu.com/s/1eRMZq18 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  6. 【iCore3 双核心板_FPGA】实验二十:基于FIFO的ARM+FPGA数据存取实验

    实验指导书及代码包下载: http://pan.baidu.com/s/1cmisnO iCore3 购买链接: https://item.taobao.com/item.htm?id=5242294 ...

  7. 【iCore3 双核心板_FPGA】实验二十二:Niosii——固化程序到 EPCS 里

    实验指导书及代码包下载: http://pan.baidu.com/s/1c2lyNQS iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  8. 【iCore3 双核心板_FPGA】实验二十四:Niosii——SDRAM读写实验

    实验指导书及代码包下载: http://pan.baidu.com/s/1c2xAJT2 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  9. OD 实验(二) - 绕过序列号验证

    需要破解的程序 输入用户名和序列号,点击 Check,程序会进行校验 用 OD 打开程序 按快捷键 Ctrl+F9 跟随表达式 GetDlgItemTextA 点击 ok 在这里调用了 GetDlgI ...

随机推荐

  1. [Scala]Scala学习笔记五 Object

    1. 单例对象 Scala没有静态方法或静态字段,可以使用object来达到这个目的,对象定义了某个类的单个实例: object Account{ private var lastNumber = 0 ...

  2. 使用gmock白盒测试

    提起白盒测试,很多程序员可能觉得就是个书上的概念,很多人写完代码根本没有具体的测试方案,自己觉得可行就提交了,其实这是个很危险的事情,毕竟出了bug,最后要加班的人还是你 ,因此做好白盒测试,100% ...

  3. SQL基础五(作业代码)

    create database stuinfo create table student ( mid ) not null primary key, mname ) not null ) create ...

  4. ubuntu安装 tensorflow GPU

    安装支持GPU的tensorflow前提是正确安装好了 CUDA 和 cuDNN. CUDA 和 cuDNN的安装见 Nvidia 官网和各种安装教程,应该很容易,重点是要选准了支持自己GPU的 CU ...

  5. es6模块化开发

    export导出 import导入   export {a:b} Export default {a:b}

  6. Git详解之九 Git内部原理

    以下内容转载自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各 ...

  7. SLIP 协议

    SLIP 协议 SLIP 英文原义:Serial Line Internet Protocol 中文释义:串行线路网际协议 注解:该协议是Windows远程访问的一种旧工业标准,主要在Unix远程访问 ...

  8. mac下安装伪分布hadoop2.6.0和hbase1.0.1.1

    1.安装JDK,我安装的是java1.7 2.创建管理员账户 3.安装ssh服务(如果已有跳过此步) 4.ssh无密码验证登陆 以上过程略,可参考ubuntu下安装hadoop一文. 5.下载并解压h ...

  9. 解决 git 错误 error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 11

    环境 Windows 7 . git push 时出现错误,无法提交代码到远程仓库. Counting objects: , done. Delta compression using up to t ...

  10. CF1117D Magic Gems

    CF1117D Magic Gems 考虑 \(dp\) , \(f[i]\) 表示用 \(i\) 个单位空间的方案数,答案即为 \(f[n]\). 对于一个位置,我们可以放 \(Magic\) 的, ...