热门标签 | 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:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • jQuery HooRay:一款自创的实用 jQuery 工具插件
    这款插件主要由作者在工作中积累的常用功能开发而成,旨在解决现有插件间的冲突及浏览器兼容性问题。通过整合和优化现有插件,确保其稳定性和高效性。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
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社区 版权所有