热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

一次练手实战破解某字典–爆破篇

i春秋作家:Bug制造机背景额,最近电脑出问题,准备格盘,翘了选修回来准备重装,打开了某个文件,

i春秋作家:Bug制造机

背景

额,最近电脑出问题,准备格盘,翘了选修回来准备重装,打开了某个文件,发现有个名为:比crackme难一点的压缩包,如果没记错的话,是一个学长曾经发的小挑战,当时没能完成,为了把以前的坑给填上,于是决定玩一下

试运行 猜测验证方式

一般 拿到 Crackme 先试运行,看看它是个啥,然后注册的情况是个啥。
打开后,注册页面如下:

image.png

 

输入假注册码

点击注册后:

image.png

有一丝丝尴尬,就是这软件不是即时验证通过的,下一次启动时才会验证。那意味着应该是把注册信息存到了电脑上然后重启时验证。

存储的方式(了解的有这几种):

  • 本地文件(可能)
  • 注册表(可能)
  • 网络服务器(不太可能,这软件比较Low)

IDA静态分析

查看导入表

image.png

如果对注册表有了解,也是用过注册表编辑器,regedit 这玩意儿,应该看到这几个会有点感觉,他们是不是操作注册表的函数?
或者如果不熟,直接上网上搜 操作注册表的api查看相关资料在和导入表中比对。

这里放一个连接
windows常用函数注册表操作函数

不懂的可以查阅

导航进入关键代码块

IDA有很强大的导航功能,点导入表中的项(我点的RegQueryValueExA)就会来到这个页面:

image.png

关于这个页面,你可以理解为:
IDA分析完二进制文件后,这个二进制文件使用了的常量数据和函数的一个汇总的地方,并且这个地方记录了,那些代码块使用了它(在IDA权威指南中这个术语叫交叉引用,这个功能很强大)

codexref:这个是代码交叉引用(就是那个代码块,调用了这个函数)

dataxref:这个是数据交叉引用(就是那个代码块使用了这个数据)

看我画圈的地方,codexref冒号后面是调用它的代码块的哑名(IDA为一个代码块自动生成的名字而已),点它来到这个页面:
image.png

直接F5吧:

image.png

简单描述下这些东西的作用(自己分析的话,看我上面给的文章链接,去读这些代码)
打开HKEY_CURRENT_USER里的注册表—-然后取对应名称的键值到对应变量—根据取指的不同,然后返回结果。

这样分析过后,猜测,这个其实就是在取我们之前假注册的用户名和注册码,准备下一步的验证。

为了再验证下,直接到注册表HKEY_CURRENT_USER中去搜索下用户名,然后你就能看到下面的这些东西。

image.png

返回到链接文字 汇编代码页面按下空格转到GRAPH模式,如图:

1513246130-886131-tim20171130222356.png

然后

点我画圈的地方,看哪个代码块调用了这个取用户名密码的函数,极有可能调用完后在那个代码段中就会有验证的操作

如图:

1513246086-722052-tim20171130222609.png

点进去,来到调用它的地方,然后f5吧。

如图:

1513246021-69662-tim20171130222702.png

打钩出为,之前分析的函数。

然后调用了一些函数,然后有个if验证比较。稍微留点心,看看传给我们之前分析的函数的参数你就能知道这里干嘛了,就能发现这里其实在对flag操作了。

然后通过对if里面的进行比对,然后跳转分支到已注册和未注册的执行流中去
为了验证,上调试吧。

在汇编界面查看那个判断的地址的偏移地址然后OD中Ctr+g哪儿下个断点,然后运行,就在哪儿停下了,然后你单步分析下,没注册的时候是直接跳转的。

那你把它nop掉 不让它跳转即可。

如图:

1513245968-609611-tim20171130223906.png

然后直接运行。

1513245870-709326-tim20171130224025.png

然后验证成功!保存下就可以了。

接下来就是逆向验证算法了,详情请一次练手实战破解某字典之注册机篇

文章写得比较啰嗦,是希望能对逆向这条道路上挣扎的新手尽一点绵薄之力,个人学习逆向还是很苦逼的,建议顺着我的思路去复盘下,也希望看完这篇文章的朋友能够在实战中举一反三。



推荐阅读
  • 1、Everything:速度最快最好用的文件搜索工具,可以基于文件名极速搜索、瞬间定位文件,所有匹配的文件或文件夹都会实时显示,Windows7之后为减少硬盘占用,在关闭索引功能后不能得到“即搜既 ... [详细]
  • “新建安卓工程时,src与res目录下没有自动生成的.java和.xml文件“的解决
    在自学编程的过程中,由于没有老司机带路,环境搭建是一个非常容易出小错误而且很难找错的过程。此次JAVA环境搭建好,并进行JAVA基础的学习之后,搭建安卓环境。我默认下了目前较高版本 ... [详细]
  • 搜索栏算是UI中很简单的一个操作了,拖一个搜索栏上来。   搜索栏中比较重要的属性是占位符,也就是图中右侧的Placeholder,比如输入“请输入关键字”,显示如下: ... [详细]
  • VS2010快捷键大全原文:http:www.cnblogs.comLifeKingcnarchive201304163023603.html【窗口快捷键】Ctrl+W,W:浏览器 ... [详细]
  • 如何设计一个秒杀系统(各方面都写的很到位)
    1.Overview1.1并发读写秒杀要解决的主要问题是:并发读与并发写。并发读的优化理念是尽量减少用户到服务端来读数据,或者让他 ... [详细]
  • helm V3版本
    1、引入(1)之前方式部署应用基本过程*编写yaml文件**deployment**Service**Ingress(负载均衡、 ... [详细]
  • 1:dosboxmasm汇编环境的安装和使用https:blog.csdn.netyuzuruhanyuarticledetails802874192: ... [详细]
  • 怎么把bmp转换成pdf?bmp转pdf格式软件推荐
     相信大家应该对图片格式有所了解,bmp就是其中的一种图片格式,而pdf是一种常见的文件格式。两者本来没有太大的练习,不过有些小伙伴在后台向我咨询,如何实现bmp转pdf ... [详细]
  • 这是一份详细 & 清晰的计算机网络基础 学习指南
    前言计算机网络基础该是程序猿需掌握的知识,但往往会被忽略今天,我将献上一份详细&清晰的计算机网络基础学习指南,涵盖TCPUDP协议、Http协议、Socket等,希望你们会喜欢。目 ... [详细]
  • 首先,下载后是一个压缩包,解压后,是一个文件夹(孢子),里面有一个安装程序,点击安装(选英文,别选繁体中文,是乱码);注意,这里非常重要:安装目录就选解压出来的这个文件夹(孢子),千万不要选别的 ... [详细]
  • 从分布式数据库选型的第一件事谈起
    本文很长,谨慎阅读现在在我们的面前摆着太多的分布式数据库可以让我们选择,那么如果我想先让 ... [详细]
  • 1.选中属性或方法后相同的属性或方法高亮显示myeclipse--windows--java--Editor--contentAssist--MarkOccurrence ... [详细]
  • 简单理解rsa的加密和签名PHP实现
    我们先动手在linux上生成一下rsaPs:openssl是一堆加密算法和安全协议的开源集合,像RSA,DES,MD5,RC4等等,都能在openssl里面找到源代码 ... [详细]
  • DNNBrain:北师大团队出品,国内首款用于映射深层神经网络到大脑的统一工具箱...
    导读深度神经网络(DNN)通过端到端的深度学习策略在许多具有挑战性的任务上达到了人类水平的性能。深度学习产生了具有多层抽象层次的数据表示;然而,它没有明确地提供任何关 ... [详细]
  • 稀松数组
    稀松数组1.稀松数组什么?在一个数组中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该数组为稀疏数组;如图,一个5*5的数组arr上只有3个有效数值 ... [详细]
author-avatar
kobe0390
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有