需要破解的程序

输入用户名和序列号,点击 Check,程序会进行校验

用 OD 打开程序

按快捷键 Ctrl+F9 跟随表达式 GetDlgItemTextA

点击 ok

在这里调用了 GetDlgItemTextA,按 F2 下一个断点

按这个 C 字母,快捷键为 Alt+C 回到程序的起始处

然后按 F9 运行程序,将弹出对话框

输入用户名 sch01ar,序列号 123456,然后点击 Check

程序将在断点处停下

此时的程序没有弹出序列号错误的对话框,因为程序只运行到断点处

按 F7 进行程序的运行

运行到 call 指令这个位置,可以按 F7 进入函数内,但是函数内没什么内容

跳出函数,按 F8 继续往下走

在这个地址看到了刚才输入的用户名

可以在 hex 中进行确认

继续按 F8 可以得到

EAX 中存放着序列号,EDX 中存放着用户名,EBX 中存放着用户名的长度

push 分别把 EAX,EDX,EBX 入栈,这三个是 call 调用地址为 00401340 函数的参数

这个函数可能是验证序列号的,直接看函数的返回值,按 F8 步过,往下走

运行到这,test 判断 EAX 是否为 0,如果为 0,零标志位 Z 就为 1

0 为 False,即结果不正确

按 F8 执行 test eax, eax

这时的 Z 的值就为 1 了,说明函数返回的是 False

双击 Z 的 1,变为 0

成功

把这个判断给去掉,双击这个 je 指令,或者按空格

改为 nop

接下来保存文件

选择这两行 nop,右键 -> 复制到可执行文件 -> 选择

然后在上面这个界面右键 -> 备份 -> 保存数据到文件

保存完后打开该程序

可以运行的

接下来看看有没有绕过序列号的验证

输入用户名 aaaaaa,序列号 111111,点击 Check

成功绕过了序列号验证

OD 实验(二) - 绕过序列号验证的更多相关文章

  1. OD之绕过序列号验证(二)

    上次是修改程序的标题,大家应该感觉这只是一个起点而已,接下来我们可以尝试绕过序列号验证,这种技术应用在很多软件中,比如淘宝上要买什么的软件,商家都会发给`你一个用户名和密码,而且还有试用期什么的,这确 ...

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

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

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

    程序: Keyfile.dat 里的内容 该文件中要至少有 9 个 ReverseMe.A: 运行程序 用 OD 打开该程序,运行 弹出的是错误的对话框 该程序发现 OD 对它的调试,所以该程序对 O ...

  4. 20145215&20145307《信息安全系统设计基础》实验二 固件设计

    20145215&20145307<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux ...

  5. 20145221高其&20145326蔡馨熠《信息安全系统设计基础》实验二 固件设计

    20145221高其&20145326蔡馨熠<信息安全系统设计基础>实验二 固件设计 实验目的与要求 了解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 l ...

  6. 20145208 实验二 Java面向对象程序设计

    20145208 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  7. ORACLE 实验二

    实验二:数据操纵 实验学时:4学时 实验类型:综合型 实验要求:必修 一.实验目的 1.掌握SQL数据查询语句: 2.掌握SQL聚集函数的使用. 3.掌握SQL插入.改动.删除语句的使用. 二.实验内 ...

  8. SQL基本查询_单表查询(实验二)

    SQL基本查询_单表查询(实验二) 查询目标表结构及数据 emp empno ename job hiedate sal comn deptno 1007 马明 内勤 1992-6-12 4000 2 ...

  9. 20162321王彪-实验二-Java面向对象程序设计

    实验二Java面向对象程序设计 实验内容一 初步掌握单元测试和TDD 什么是单元测试:单元测试时开发者编写的一小段代码,用于检测被测代码的一个很小的,很明确的功能是否正确.执行单元测试,是为了证明某段 ...

随机推荐

  1. Linux下的Maven安装与配置

    关于Maven的介绍可以参考:Maven详解 这篇在原理上讲得比较详细,在安装上是windows版本的,这里补上linux下的安装和配置: 1.下载maven安装包 http://maven.apac ...

  2. tensorflow 初学习

    tenseroflow 拟合 y = ax*x+b构建神经网络主要分为 4 个步骤:构造数据.构建网络.训练模型.评估及预测模型.此外,还介绍了一些超参数设定的经验和技巧 #coding=utf-8 ...

  3. HDU 1043

    http://acm.hdu.edu.cn/showproblem.php?pid=1043 http://www.cnblogs.com/goodness/archive/2010/05/04/17 ...

  4. IOS开发 多线程编程 - NSOperationQueue

    一.简介 一个NSOperation对象可以通过调用start方法来执行任务,默认是同步执行的.也可以将NSOperation添加到一个NSOperationQueue(操作队列)中去执行,而且是异步 ...

  5. vim 强大复制链接

    参考文献: http://blog.csdn.net/xiyuan1999/article/details/5680102 vi编辑器中的整行(多行)复制与粘贴就非常必要了. 1.复制 1)单行复制 ...

  6. admin- 源码解析(流程)

    首先我们需要了解一个知识点:---单例模式--- 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中 ...

  7. [转载][QT][SQL]sql学习记录4_sqlite约束

    转载自:定义以及示例请见 : http://www.runoob.com/sqlite/sqlite-constraints.html SQLite 约束 约束是在表的数据列上强制执行的规则.这些是用 ...

  8. selenium-java,cookie登陆

    方法 public void login(WebDriver WebDriver,String cookie1[],String cookie2[]) throws ParseException{// ...

  9. .NET Core 和 .NET Framework 中的 MEF2

    MEF,Managed Extensibility Framework,现在已经发布了三个版本了,它们是 MEF 和 MEF2. 等等!3 去哪儿了?本文将教大家完成基于 MEF2 的开发.   ME ...

  10. pat乙级 1091 N-自守数 (15 分)

    如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×92​2​​=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守 ...