吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11060|回复: 34
收起左侧

[原创] 初练一个CrackMe,带分析过程

  [复制链接]
rommyjob 发表于 2018-10-23 21:59
    初练一个CM,比较简单,无壳,借以熟悉OllyDbg操作。高手可从此处略过。
CRACKME.zip (3.91 KB, 下载次数: 159)


第一步:查壳,获取编程的语言。
   拿到后,首先查壳,查壳方法有多种,这里用PEID。
QQ截图20181023211210.bmp
这里我们看出无壳,且直接识别出来了是GUI程序,并且得到了编写的语言是汇编。
启动OllyDBG论坛专用版,F2载入。如图:
2_看图王.jpg
通过观察入口点,如果熟悉Win32窗口程序编程的话,可以一眼看出,图中是在调用一系列的API,目的是注册窗口类,以便创建窗口。没有VC,Delphi等的入口点特征,佐证了PEID的查证结果。


第二步:获取破解的入手点。
F9运行程序,如图:
3.jpg
点击Help->Register按钮,弹出注册窗口,如图:
4.jpg
由于我们不知道名字和序列号,随便输入点,点击OK。此时弹出:
5.jpg
哈哈,Not lucky!失败了。不过这个就是我们的入手点了。这里要说明下,接下来有很多种手段来入手。
第一种:从这几个错误提示信息入手,检索该模块的文字引用,然后找到该错误框提示的位置,观察上下文,爆破。
第二种:由于是汇编代码编写的,没有壳,规模又比较小,可以从反汇编明确看出它调用了MessageBox API,那么给该API下BP断点。然后F2重新载入,运行断下来之后,观察堆栈,确定弹出位置,再观察上下文,爆破。
第三种:在Dump窗口,搜索No luck字符串,如图:
6.jpg
确定搜索后,找到结果位置,如图:
7.jpg
然后下内存访问断点,看看到底哪个代码试图访问该内存区,断下来后,观察上下文,爆破。
第四种:从dll的区段入手,我们知道,MessageBox是user32.dll的导出函数,那么该程序要想调用MessageBox,那么必须访问该dll内存。因此,在该区段的内存区下内存访问断点,如图:
8.jpg


第三步:爆破。


找到入手点后,分析上下代码,如图:
10.jpg
我们可以看到,错误提示框,是在00401362  /$  6A 00         push 0x0                                 ; /BeepType = MB_OK
在提示窗口,可以看到本地调用来自 00401245,也就是说起始点为00401245的函数,调用了该错误框,那么爆破的关键点,就在00401245函数里!跟随过去,如图:
11.png
可以看到,00401243     /74 07         je short CRACKME.0040124C,这里有一个判断跳转,跳转的目的地是0040124C   > \E8 FC000000   call CRACKME.0040134D,
这一句的功能是调用子函数0040134D,我们Enter预览内容,发现其正好是成功提示,如图:
13.jpg
按下减号退出预览。那么分析到这里,爆破就很简单了,直接将00401243     /74 07         je short CRACKME.0040124C的 je修改为相反的jne即可。选中该行指令,按下空格,
14.jpg
点击汇编,确定返回,如图:
17.jpg
右键,复制到可执行文件,将内存中的指令修改,应用的文件的offset中去,使其永久生效。另存成CrackMe_done.exe。
CRACKME_done.zip (3.92 KB, 下载次数: 30)
运行,如图,完成!
ddd.jpg

免费评分

参与人数 9吾爱币 +13 热心值 +9 收起 理由
qq1261256631 + 1 + 1 谢谢@Thanks!
wangyishun1234 + 1 + 1 我很赞同!
Hmily + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wwwio + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
丿猎狐 + 2 + 1 下载次数那么少,,不管简不简单,都不尝试的么,风气有点子不正啊
天山雪 + 1 热心回复!
虹之间 + 1 + 1 热心回复!
cscsxiaojie520 + 1 + 1 热心回复!
N9loveyou + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

52lxw 发表于 2018-10-26 21:16
[Python] 纯文本查看 复制代码
name = "NNNN" 名字必须是大写
 s = 0 
for i in name:
    s+=ord(i)
print(i^0x5678^0x1234);
zhaoying822 发表于 2018-10-23 22:35 来自手机
前排占楼,顺便问个问题我手上有个软件为什么有时候用bp exitprocess梦段下来,有时候段不下来。现在试一直断不下来了
dsfdgfdgfhgf 发表于 2018-10-23 23:14
sosolove 发表于 2018-10-24 09:33
教程贴,支持
破解007 发表于 2018-10-24 10:05
感谢分享
wxjgeorge 发表于 2018-10-24 10:55
ASM的程序,爆破就不好玩了,跟一下算法
wxjgeorge 发表于 2018-10-24 10:56
^_^,长度不够。
头像被屏蔽
xiwangyuanye 发表于 2018-10-24 14:01
提示: 作者被禁止或删除 内容自动屏蔽
Chenbobo 发表于 2018-10-24 14:40
加油。努力
1246369360 发表于 2018-10-24 16:38
支持一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 13:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表