吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2868|回复: 8
收起左侧

[原创] CrackMe160学习记录1 Acid burn

[复制链接]
宇宙第一魔王 发表于 2022-3-23 17:39
本帖最后由 宇宙第一魔王 于 2022-4-6 02:25 编辑

1 Acid burn

1.前期信息探查:

EXEinfo:

95$`DSN6LN(WRPO2F[RHRKR.png

运行一下:

首先会弹出一个弹框:
[K95(~6$K0M@$A6B{QG}V4U.png
确定后就进入了主界面:
H8D7H9L[QZ2$}M}A{}H9RJO.png
先看左边的用户名和密码模块,进去看一下:
1OG6)9((O0M8A$X$K@$K2VO.png
尝试随便输一些东西:
M{~V3AN%HVDG_N`LKQ7P@`D.png
然后是右边的序列号验证:
}_RN8EQ4(H9GDR1`VWYP[A8.png
9DVY6)TQ5Z4J(36(7WAO3FI.png

2.动态调试:

先分析右边的序列号(因为这个简单一点)

序列号验证功能:

当序列号输入错误时,会弹出一个对话框:”Try Again!!“
所以第一个想到的就是搜索参考字符串:
``ZZ5KD1JZCIKU7C]V0BRFX.png
这里发现有两处”Try Again!!“,这让我有点异或,这里选择先跟过去看看有哪些地址引用了它:
J~3YL8CKO3(O)R1D~U[T{HM.png
J~3YL8CKO3(O)R1D~U[T{HM.png
我在两处都下了断点然后运行程序想看一下程序会停在那个地方,但可惜的是它哪都没停,之后我在下面找到了
771QUVTSLEETLPQ$)PX{#.png
我个人猜测这应该是识别错了,我转用x32dbg,就可以正常的的操作了。
U`I~F5@FO6DFJI42$QLOR27.png
可以看到验证序列号的字符串是第一个有两个感叹号的字符串,双击跟过去:
这部分的代码大概意思如下:42F4D0处的代码利用call跳转到序列号的判断函数,参数有两个分别在42F4CA,42F4CD处压栈保存,判断结果在标志寄存器里面,然后在42F4D5处jne(当ZF标志为0时跳转)对标志寄存器进行判断,也就是说这里判断返回的结果是否为0,为0,ZF置一,跳转至42F4F1处输出“Try Again!!”,结果为1,则输出"God Job dude !!”。
8EU@CF[XYU598JLVCX4TE~B.png
~0%`8PI3F)5R~S@LC0UV@ZF.png
在42F4D0处下断点然后运行,选择Serial窗口,然后输入就以默认输入,之后直接F9,可以发现:

程序停在42F4D0处时,就可以看到调用函数验证时的两个实参的值了,第一个为我们自己输入的内容,另外一个就是真正的序列号字符串”Hello Dude!“

用户名密码功能:

根据之前收集到的信息得知用户名密码输错会报一个字符串”Sorry,The serial is incorect!“
还是一样直接搜索字符串,通过错误跳转处看引用其的条件跳转语句:
_]J[~OL7XS_[4U03MU6N8.png
在42FAFE处下断点,然后进入程序的Serial/Name功能,随便输入一些东西
A]3A2)YHALEW29F)MJM6(}O.png
Check it后再看调试界面就能看到Serial了。
{6FO_H_1OA}A]$]N1KR@YWR.png
但这里不像之前的操作那么容易,一般既要输入用户名又要输入密码的话,密码可能是通过用户名计算的,这里尝试一下别的用户名
0KB5O4M~(_7B]R32KWOEY}W.png
OS1B`4DM_ZH53}OZ)1`LDQ0.png
这两张图就说明了,这个序列好并不是固定的,而是通过用户名来计算的,而且这里还有个问题需要注意,下面这张图的用户名”hahaha“和之前的拿到Serial的用户名也不同少输入了一个ha,这里推测,Serial的值是根据用户名的前几位来计算的,下面主要分析42F4D0上方的汇编代码
J`~)ACY]}1Y%H_J6IMVCUVF.png
但是粗略看了一下上面的代码量,果断先用ida分析一下算法
用ida可以看到,其实上面很多函数多引用了name里的参数,但是都没用到
J}OZ_~$~%J2EJ}~EJH]@{_M.png
回到汇编代码分析关键的几个点:

  • 判断串长是否大于等于4

    Q}L%K_E3688]UG@3N~[G7[8.png

  • 对name的第一个字符进行运算:

    (~PT5_RK4F91IN2BD}REVW7.png

  • 生成序列号进行比较:

    M@{3)BLAI(8ON~7`~73GJ7N.png

3.写注册机:

之前我们确定了序列号的验证流程,用户名要求长度大于等于4,然后取出用户名的第一个字符,将它的Ascii码值与0x29相乘,然后乘以2,再将结果转成字符串,最后拼接成”CW- 结果-CEACKED“

#include"stdio.h"
#include"stdlib.h"
int main()
{
        char str1[10] = "";
        char serialc[10] = "";
        int fc_str1,seriali;

        puts("Please Input Your Name:");
        scanf("%s", str1);
        fc_str1 = str1[0];
        seriali = fc_str1 * 0x29 * 2;
        itoa(seriali,serialc,10);

        printf("CW-%s-CEACKED",serialc);

        return 0;
}

编译运行后搞一搞:
6I(75ULX{M7]BZ7BK]_~N06.png

附件.zip

667.77 KB, 下载次数: 25, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 2吾爱币 +8 热心值 +2 收起 理由
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Panel + 1 + 1 我很赞同!

查看全部评分

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

0xchuxiuyun 发表于 2022-3-23 19:49
学习了学习了
 楼主| 宇宙第一魔王 发表于 2022-3-23 21:26
第一次写,动态调试还是不熟练,要是有什么问题还请指正
tantalizing 发表于 2022-3-24 00:17
Grav1ty 发表于 2022-3-24 14:50
顶,lz持续更新嘛
 楼主| 宇宙第一魔王 发表于 2022-3-24 16:56
Grav1ty 发表于 2022-3-24 14:50
顶,lz持续更新嘛

会的,今天就会更新
nayiye00 发表于 2022-3-24 18:50
课件里的软件链接呢?
 楼主| 宇宙第一魔王 发表于 2022-3-24 19:26
nayiye00 发表于 2022-3-24 18:50
课件里的软件链接呢?

我是按照这个师傅的帖子学的:
https://www.52pojie.cn/thread-709699-1-1.html
chenyiqq2008 发表于 2022-4-8 14:59
大神呀。厉害的哥
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 17:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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