160个CRACK_ME系列 第一弹

这是160crackme系列的第一个,下载链接我会放在文章末尾,有兴趣的朋友可以玩玩看。
我们先打开文件

上来就是一个明晃晃的挑衅,等会一定也要把他干掉

有三个按钮,看起来右边这个简单点,就点他好了


这时候对软件的大体结构一定要有思路,虽然不能直接得出flag但是会对程序的分析有很大的帮助。那么来分析一下这个程序,左边那个按钮的部分大概就是根据输入的Name字段来生成Serial,而这个部分应该就是一个固定的注册码。
按照惯例,先拉到PEID里查查壳

不认识,没关系,百度一下看看是啥玩意

幸好,不是壳而是一种语言,那就不用脱壳了,拉倒ODB里看看

这种界面比较复杂的crackme一般难点就在如何找到主要函数,我们来右键->中文搜索引擎->智能搜索,ctrl+f来找一下serial字符串

就这样我们找到了我们需要的部分字符串,从结果来看有两个当输入错误时的提示信息,分别是42FA5E和42FB21,那我们在这两处下断点,然后把程序跑起来

这个对话框先弹了出来,我们先忍他一会

还是点右边的选项,随便输点什么

emmm 并没有断到,这次我们以Failed为准再下一次断点在42F4F3处

这次我们断到了,那么我们一开始断的两个Try again应该就是左边按钮的了,先不管他,我们来分析一下这段代码:其实也没什么好分析的,只有一个关键跳转我们需要注意,那么我们想让它”恭喜”我们的话,只要把位于42F4D5的关键跳转Del掉就ok了,

然后重新运行一下

当然我们想做的远不止这些,在软件的更新中,注册码常常会改变,但是软件注册码的加密算法一般是不会变的,所以通常的做法是继续查找他的加密函数。对于右边按钮这部分而言,应该只是一个固定字符串,所以我们的任务就简单多了,我们先把这部分还原,然后向上查看代码,看看是什么让这个跳转执行了

可以看到,我们输入的字符串就存在EAX处,那么EDX应该就是我们要寻找的固定字符串了,

我们把断点取消,让程序跑起来,看看这个字符串是否正确

所以这部分我们就完成了!我们在返回主界面来看一下左边的按钮。


断在了之前两个断点的位置,两个断点都有”Try again”字段,我们依次来分析这两个位置的跳转,首先是第一个断点:

我们看到这个只会返回错误的提示而没有正确时的提示,且在42FA5A处跳转的前面有一个cmp指令,将EAX与0x4进行对比,所以这应该就是对字符串的长度进行限制,若长度不足4就直接返回Try again,那么我们再看看第二个断点内容。

这个部分就很熟悉了,和之前右边的按钮部分一模一样,再来看看42FAFB处的内容

这就很明显是我们在找的注册码了,我们重新开一个进程来试验一下

正确,那么我们就来找他的加密部分吧,在这之前我们先来猜一下这部分的流程:
输入->检测长度->加密->对比->输出结果
所以假如和我们想的一样的话,加密部分就应该在两个断点之间,我们来找一下

就在第一个断点下不远,我们找到了一段很可疑的代码,他对我们输入的字符串进行了运算,而且与我们之前找到的注册码的部分字符串有联系,那这就很有可能是我们要找的加密部分了,我们在42FA87处下个断点,重新运行程序以便来分析这段代码,

这样我们就完成了对这段加密代码的解析,再写一段python脚本来重现这段代码


这样我们就完成了这个程序的解析,我们再来做点其他事情,比如最开始的对话框
右键->中文搜索引擎->智能搜索 来找对话框上的字符串

很轻松的我们就找到了,我们来想办法把这个提示框干掉,这时候我们有两种思路,一种是把调用这个函数的代码del掉,另一种是把调用这个函数的代码修改一下,调整到42f79c,让它一进入函数就跳出去,不管哪一种操作,都一定要小心保持堆栈平衡,不然程序会崩掉。那我们在42F784处下个断点,把程序跑起来,

这时候栈里就有了调用这个函数的代码的地址,

就是这里了,因为这一处没有进行压栈操作,所以我们直接del掉就可以了,然后右键->复制到可执行文件->选择 会弹出这样的东西

再右键->保存文件 将他保存下来,我们再打开试一下效果

直接就弹出来了,消灭对话框成功!

链接:https://pan.baidu.com/s/1PxBttyWn_6ZZNIe9bqJrnQ
提取码:z14n

END

原文地址:https://blog.51cto.com/13992485/2404530

时间: 2024-10-19 02:02:54

160个CRACK_ME系列 第一弹的相关文章

javascript之【贪吃蛇系列】第一弹:简单的贪吃蛇实现

参考博客:http://blog.csdn.net/sunxing007/article/details/4187038 以上博客是参考,毕竟第一次做,真让自己盲人摸象做不出来. 不过我在其上做了一些改进,界面等效果看起来更好一些. 下图是在Chrome上运行的效果,但是火狐和IE会不兼容,onkeydown事件不能正确调用 这里用了一张图把贪吃蛇制作过程的思想画了出来,画的有点简陋: 下面就是把代码发上来,上边有详细的解释: <html> <head> <title>

前端学HTTP之报文系列第一篇——起始行

前面的话 如果说HTTP是因特网的信使,那么HTTP报文就是它用来搬东西的包裹了.HTTP报文是在HTTP应用程序之间发送的简单的格式化数据块,每条报文都包含一条来自客户端的请求,或者一条来自服务器的响应.它们由三个部分组成:由起始行.首部和实体的主体部分.本文是HTTP报文系列第一篇——起始行 报文语法 所有的HTTP报文都可以分为两类:请求报文(request message)和响应报文(response message).请求报文会向Web服务器请求一个动作,响应报文会将请求的结果返回给客

深究angularJS系列 - 第二弹

深究angularJS系列 - 第二弹,在初步了解了Angular的基础上,进一步的针对Angular的控制器和作用域问题深入探究O(∩_∩)O~~ Angular控制器 控制器(Controller)的理解 控制器是对view的抽象,用来接收view的事件,响应view的请求: 控制器包含view的静态属性和动态的方法: 控制器与view是一对一的关系. 控制器(Controller)的结构 1 .controller("控制器的名字",function($scoppe){ 2 ..

C#Light 和 uLua的对比第一弹

初始化 做一样的初始化,其实是没办法对等的 C#Light的Env 不等于Lua的LuaState C#Light的执行有完全的执行堆栈,完整的作用域,lua都没有 C#Light有完整的class 函数,继承特征,lua都没有 C#Light可以用VS做编辑器,lua? 为了保持平等对抗,三个测试先做一遍,再依次执行 测试1 ,简单的一次创建给个名字并销毁,测试300次 测试2,调用Debug.Log打印,执行300次 测试3,一次性在脚本里多调用一些方法,创建10个物体再销毁 测试一结果:

你好,博客园!!第一弹~局域网下的简易聊天室,socket与多线程简结

发觉博客园里面关于这些基本知识点的详细内容真是应有尽有,所以这里的随笔就不再重复了,就积累一下简单的用法-- 1.Socket 最近学网络编程,也就是Socket,套接字,一个用来建立链接传输数据的工具. 数据传输发生在"客户端"与"服务端"之间,下面是一种建立连接传输数据的简单方法: (1)客户端 1 try{ 2 //服务端ip 3 String ip = "127.0.0.1"; 4 //服务器端口 5 int port = 5000; 6

【数据库优化(持续更新)】--第一弹设计优化

前言 数据库是程序的仓库,也是程序中最脆弱的一部分,因为它的脆弱性和重要性,所以需要专门进行管理和优化.在如今的网络化的时代更加需要数据库的灵活和快捷,一个高效的数据库能够使程序运行效率更快,提高程序的运行效率.但往往对数据库的设计达不到我们想要的效果,所以数据库的优化显得尤为重要.该系列文章正是考虑大数据量的当今如何才能让数据库的设计更加灵活,数据检索.操作更加高效展开的讨论,其中涉及到的优化方法是在笔者长期的开发经验以及其它有关数据库优化的文章基础上进行总结的,如果有异议还请指出. 数据

java nio 第一弹

java NIO 第一弹----概览 摘要: Non-blocking I/O (usually called NIO, and sometimes called "New I/O") is a collection of Java programming language APIs that offer features for intensive I/Ooperations. It was introduced with the J2SE 1.4 release of Java b

codechef 营养题 第一弹

第一弾が始まる! 定期更新しない! 来源:http://wenku.baidu.com/link?url=XOJLwfgMsZp_9nhAK15591XFRgZl7f7_x7wtZ5_3T2peHh5XXoERDanUcdxw08SmRj1a5VY1o7jpW1xYv_V1kuYao1Pg4yKdfG4MfNsNAEa codechef problems 第一弹 一.Authentication Failed原题题面Several days ago Chef decided to registe

FluentData 学习 第一弹

地址: http://fluentdata.codeplex.com/ 前世: FluentData 我们公司用的一个增删改查的里面的持久层.之前还不知道 这个持久层叫FluentData.  某天看见群里 说 某视频网站里面 居然在讲这个开发框架,还收费.我搜了一下.fluentdata有源代码. 这个13年有过记载.不过我是新手.什么也需要 学习一下.  和 室友说了一下微型orm ,他们 呢  用的  微型orm是 Dapper .可以去了解一下. 废话真多,完毕. FluentData