目录

基本概念

代码与实例

打包下载


基本概念

分析一个程序,用什么API函数作为切入点十分关键。

设置OllyDbg中断在程序的入口:

System breakpoint:系统断点,OllyDbg用CreateProcessA加载DEBUG_ONLY_THIS_PROCESS参数执行,程序运行之后会触发一个INT13,在系统空间里。

Entry point of main module:主模块的入口点,即文件的入口点。

WinMain:程序的WinMain()函数入口点。

点击选项,再点击开始,即可选择暂停点:

普通的Win32项目或者MFC程序

程序通常读取文本框内容的字符串用的是以下两个函数:

GetDlgItemTextA(GetDlgItemTextW)

GetWindowTextA(GetWindowTextW)

Qt程序在Windows逆向过程中其实也有这个,但可以根据Qt函数特意的特征,进行破解,在下面的代码与实例中将会给出。

关于返回值,汇编代码的返回值约定是存放在eax这个寄存器里边的,如果32位的eax不够存放返回值,系统会将返回值放在内存某个位置并把该位置的地址放在eax返回。

代码与实例

这里首先破解下TraceMe这个程序。

程序运行截图如下

随机输入用户名和密码,点击确定:

使用OD打开,Ctrl + G 直接搜索:

GetDlgItemTextA

在此处下个断点,在写代码的时候,可以知道当要计算时,基本上要先获取用户的数据,然后进行算法,最后得到结果。

暴力破解,就是在得到结果的那个时间,把以前如果是fale的,变成true,让其成功的运行。

如下分析下:

发现,这个开始把用户名压入栈,估计要开始调用判断函数了!再走

这里用户名,密码都传进去了。这个Call估计就是算法,然后后的这个Test EAX,EAX就是存放结果。

走到JS跳转那个地方

把Z这个标志位改为0.看看

此时显示不跳转了,在这个地方放个断点,然后跑起来。

提示登录成功。

双击JZ这个地方:

进了这个页面后,右键保存

然后是

生成好文件后,随便输入用户名密码即可:

这里用Qt写一个小程序,关键代码如下:

#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
#include <QDebug>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(btnClicked()));
}Widget::~Widget()
{delete ui;
}void Widget::btnClicked()
{QString passwd = ui->lineEdit->text();if(isOK(passwd)){QMessageBox::information(this, "提示", "成功");}else{QMessageBox::information(this, "提示", "失败");}
}bool Widget::isOK(QString str)
{if(str == "www.it1995.cn")return true;return false;
}

这个是自己写的,密码是www.it1995.cn,现在破解他,来看看是怎么样的逻辑:

演示下,输入正确的密码:

输入错误的密码:

破解他,让其输入任意的用户名密码都能登录成功!

用OD打开他,经过慢慢的分析(其实和上面有异曲同工之妙),得到结果:

在此附近重新下个断点:

这里是关键:

成功了,像刚刚那样修改下,就算暴力破解了!

打包下载

https://github.com/fengfanchen/Qt/tree/master/checkPasswdOfOD

OllyDbg笔记-暴力破解简单判断程序(TraceMe.exe与简单Qt程序)相关推荐

  1. LabVIEW生成应用程序(exe)和安装程序(installer)

    目录 1.生成应用程序(exe) 2.生成安装程序(installer) 使用LabVIEW编写好的程序最后往往需要将程序拿到目标电脑上去运行,如何将程序从开发电脑上移植到目标电脑上呢?有两种方法: ...

  2. OllyDbg笔记-寄存器以及各种关键指令解析(含简单程序破解)

    目录 基本概念 代码与实例 基本概念 CPU中的9个寄存器: EAX:扩展累加寄存器 EBX:扩展基址寄存器 ECX:扩展计数寄存器 EDX:扩展数据寄存器 ESI:扩展来源寄存器 EDI:扩展目标寄 ...

  3. 学习笔记暴力破解漏洞分析

    概念 暴力破解,其实就是利用大量猜测和穷举的方式来尝试获取用户口令的攻击方式,如果身份验证模块设计的不好攻击者可以利用自动化攻击进行暴力破解,大大增加了密码被破解的风险. 暴力破解的测试方法是针对账号 ...

  4. OllyDbg动态调试与逆向破解TraceMe.exe

    文章目录 前言 OllyDbg 基础介绍 快捷操作 TraceMe 调试分析 破解校验 总结 前言 OllyDbg 是一个新的动态追踪工具,是将 IDA 与 SoftICE 结合起来的产物,Ring3 ...

  5. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第五章 WEB黑客(4)暴力破解HTML表单身份验证

    黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第五章 WEB黑客(4)暴力破解HTML表单身份验证 文章目录 黑帽python第二版(Black Ha ...

  6. TraceMe.exe注册码破解及注册机编写

    一.追注册码步骤解析 打开OllyDbg反汇编软件,对实验程序TraceMe.exe进行反汇编. 点击View-Executable modules查看可执行模块,在新窗口中右击,选择Show nam ...

  7. qt判断用户是否正在使用当前应用程序

    转自:https://blog.csdn.net/qq_37529442/article/details/78136917 如何在qt程序中判断当前应用程序是否被用户使用呢?我们先了解一下QAppli ...

  8. 445端口的暴力破解

    目标IP:192.168.1.19 用nmap扫描目标端口发现445是开着的 ping一下看看能不能ping通 然后使用hydra进行暴力破解,这里使用的是一个简单的字典文件 破解成功会出现如下图 另 ...

  9. [课业] | 软件安全 | 使用OllyDbg破解TraceMe.exe程序

    文章目录 实验流程 1. 调试分析 2. 破解校验 参考内容 实验流程 1. 调试分析 下载并解压OllyDbg 配置调试项目信息存储位置以及OD插件本地存储位置 运行程序,弹出用户名和序列号界面,这 ...

最新文章

  1. memcached在windows下的基本使用方法
  2. 【PAT (Advanced Level) Practice】1099 Build A Binary Search Tree (30 分)
  3. Linux 内核里的“智能指针”
  4. WinCE中串口驱动及接口函数介绍
  5. python展开 c函数中的宏预处理_C 语言常用的预处理-宏函数
  6. 【知识连载】 如何用钉钉宜搭制定企业疫情防控数字化管理方案
  7. Spark精华问答:DataFrame与RDD的主要区别在哪?
  8. 手把手教你用Python实现查找算法
  9. Docker入门之安装MySQL
  10. 【侯捷】C++内存管理机制
  11. 2022最受欢迎开源免费CMS建站系统排行榜
  12. 2011高校信息化实践者精英论坛之上海交大BI系统汇报
  13. Mac在已安装Python3.9的情况下利用miniconda配置【Python3.7+TensorFlow1.14环境】+ Sublime Text如何通过conda切换不同Python环境
  14. 点球大战中的概率问题
  15. dva 配置antd
  16. #9733;不评价别人的生活,是一个…
  17. Idea无法自动补全代码,ctrl+Alt+v无法使用解决方法
  18. 软通动力入职考试----全套
  19. 万花筒大赛获奖VR电影将亮相VR科学节,约否?
  20. python long类型_python获取当前时间戳Long类型

热门文章

  1. 确保您的Silverlight 1.0运行时间组件是最新版本
  2. 一企业彻底实现金融风险数字化,节约人力超4000小时
  3. 用几张图片教你,财务分析的平台、架构、指标体系、模型
  4. 就会编成新闻稿的飞鸽传书
  5. 飞鸽传书2014提前发布?
  6. 飞鸽传书:摆一摆自己的C++程序设计入行历程
  7. C++程序设计真得不适合
  8. web前端已经不行了?千万不要信
  9. php实现mysql 数据迁移_php实现redis数据库指定库号迁移的方法
  10. NAR再版 | 人类长非编码RNA知识库LncRNAWiki 2.0