吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1899|回复: 4
收起左侧

[原创] 练习笔记之160Crackme-010

[复制链接]
xiaoyu2032 发表于 2022-5-5 11:42

160CM-010

1.破解过程

  这道题看难度提示为“★★★”,以为会是一道难题,结果VB Decompiler打开一看,发现和009基本相同,只是算法不同。爆破就不搞了,分析了一下算法,也比较简单,就是输入的字符串每个字符ASCII码加10后的字符串与“kXy^rO|yXom\kMuOn*+”比较,相同就成功,完全没有三星的难度。
02.png
  VS中开搞,码入代码:

#include "stdafx.h"
#include <Windows.h>
#include<stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    char key[30] = "kXy^rO|*yXo*m\kMuOn*+";
    char code[30] = "";
    int i;
    for (i=0;i<strlen(key);i++)
    {
        code[i] = key[i] - 10;
    }
    printf("字符串为:%s \n",key);
    printf("注册码为:%s \n",code);
    system("pause");
    return 0;
}

  运行后,得到结果如下:
03.png
  输入文本框,点击OK,发现居然没成功。然后,OD调试、VB Decompiler重新反编译。。。一顿操作猛如虎,结果还是没发现问题出在哪里,算法看起来没有任何问题,一度怀疑vbaVarTstEq函数是不是不光比较字符串内容,还要变量体的数据类型代码完全相同,因为一个是08,一个是8008,但是程序代码里面根本没有修改变量体数据类型的其他操作。
  瞎忙活了半天,结果还是在打印出来的字符串中发现了问题,因为打印出来的字符和输入到程序代码里面的字符"kXy^rO|yXom\kMuOn*+"相比,少了一个“\”。呃……,这才想起“\”在C语言好像是有特殊含义的转义符。
  在字符串中增加一个“\”,新的算法代码如下:

#include "stdafx.h"
#include <Windows.h>
#include<stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    char key[30] = "kXy^rO|*yXo*m\kMuOn*+";
    char code[30] = "";
    int i;
    for (i=0;i<strlen(key);i++)
    {
        code[i] = key[i] - 10;
    }
    printf("字符串为:%s \n",key);
    printf("注册码为:%s \n",code);
    system("pause");
    return 0;
}

  编译,运行。
01.png
  复制注册码输入文本框,确定,成功!
04.png

2.总结

  这道题实际感觉应该比009还简单一些,但因为粗心大意,碰到一个比较SB的问题,也花费了不少时间。

  • C语言中,单引号、双引号、反斜杠都是特殊的字符,不能直接表示,需要在前面加一个反斜杠。

免费评分

参与人数 1热心值 +1 收起 理由
隔壁老王Orz + 1 谢谢@Thanks!

查看全部评分

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

snake88 发表于 2022-5-5 13:39
厉害了,实在是厉害!
iloveasdl 发表于 2022-5-6 08:11
linliisnotme 发表于 2022-5-6 11:08
taxuewuhen 发表于 2022-5-8 18:41

重温学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-25 01:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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