博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一次练手实战破解某字典–爆破篇
阅读量:5971 次
发布时间:2019-06-19

本文共 1391 字,大约阅读时间需要 4 分钟。

背景

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

试运行 猜测验证方式

一般 拿到 Crackme 先试运行,看看它是个啥,然后注册的情况是个啥。

打开后,注册页面如下:

 

输入假注册码

点击注册后:

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

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

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

IDA静态分析

查看导入表

如果对注册表有了解,也是用过注册表编辑器,regedit 这玩意儿,应该看到这几个会有点感觉,他们是不是操作注册表的函数?

或者如果不熟,直接上网上搜 操作注册表的api查看相关资料在和导入表中比对。

这里放一个连接

不懂的可以查阅

导航进入关键代码块

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

关于这个页面,你可以理解为:

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

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

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

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

直接F5吧:

简单描述下这些东西的作用(自己分析的话,看我上面给的文章链接,去读这些代码)

打开HKEY_CURRENT_USER里的注册表—-然后取对应名称的键值到对应变量—根据取指的不同,然后返回结果。

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

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

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

然后

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

如图:

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

如图:

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

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

然后通过对if里面的进行比对,然后跳转分支到已注册和未注册的执行流中去

为了验证,上调试吧。

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

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

如图:

然后直接运行。

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

接下来就是逆向验证算法了,详情请

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

转载地址:http://wxwox.baihongyu.com/

你可能感兴趣的文章
Idea debugger 无法启动-unable to open debugger port , java.net.SocketException "socket closed"
查看>>
模式和原则[转载]
查看>>
[Codeforces958F2]Lightsabers (medium)(思维)
查看>>
获取非行间样式
查看>>
java String format占位符
查看>>
JAVA spring配置文件总结
查看>>
Java5的 线程并发库
查看>>
HDOJ 1036 输入输出 水
查看>>
Java 安装后的检测是否安装成功
查看>>
设备及分辨率
查看>>
mybatis拦截器
查看>>
App重新启动
查看>>
矩阵乘法
查看>>
得到目标元素距离视口的距离以及元素自身的宽度与高度(用于浮层位置的动态改变)...
查看>>
安装和配置Tomcat
查看>>
实验三
查看>>
第一次实验总结
查看>>
openssh for windows
查看>>
java点滴(6)之java引用
查看>>
PostgreSQL cheatSheet
查看>>