吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1825|回复: 2
收起左侧

[CrackMe] 又一个CM

[复制链接]
8091956 发表于 2020-7-10 22:38
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

64位的, 无壳, 无反调试, 有混淆,

clang-llvm编译, 采用的这个ollvm版本  https://github.com/amimo/goron  

移植了 https://github.com/HikariObfuscator/Hikari 的三个Pass,


InstructionsSubstitution, FunctionWrapper 和 BogusControlFlow

开启了全部保护功能

爆破, 分析算法都可以.

正确key: 52pojie

运行如图:



下载:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 1吾爱币 +6 热心值 +1 收起 理由
CrazyNut + 6 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

solly 发表于 2020-7-11 02:57
本帖最后由 solly 于 2020-7-11 03:12 编辑

1、暴破:
[Asm] 纯文本查看 复制代码
00007FF70B4977F1 | 48:8B8D E0000000         | mov rcx,qword ptr ss:[rbp+E0]             |
00007FF70B4977F8 | 0FB611                   | movzx edx,byte ptr ds:[rcx]               |
00007FF70B4977FB | 83FA 00                  | cmp edx,0                                 |
00007FF70B4977FE | 41:0F94C0                | sete r8b                                  |
00007FF70B497802 | 3D 3A90765E              | cmp eax,5E76903A                          |
00007FF70B497807 | 44:8845 23               | mov byte ptr ss:[rbp+23],r8b              |
00007FF70B49780B | 0F87 C0FFFFFF            | ja 测试.7FF70B4977D1                        |
00007FF70B497811 | 8A45 23                  | mov al,byte ptr ss:[rbp+23]               |
00007FF70B497814 | 0C 01                    | or al,1                                   | and al, 01 ===> or al, 01
00007FF70B497816 | 0FB6C0                   | movzx eax,al                              |





2、算法:
好象就是ascii码之和等于0x27E即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

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

查看全部评分

solly 发表于 2020-7-19 03:36
本帖最后由 solly 于 2020-7-21 10:58 编辑

算法:
[C++] 纯文本查看 复制代码
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
 
typedef unsigned long UINT;
typedef unsigned char UCHAR;
 
void generateSN(UCHAR * sn);
UINT checkSN(UCHAR * sn);
void randSN(UCHAR * sn);
 
int main(int argc, char** argv) {
    UCHAR sn[8] = {0};
    srand((unsigned)time(NULL));
    //// 生成 sn 
    generateSN(sn);
    printf("sn: %s.\n", sn);
	//// 检查 sn 
    UINT result = checkSN(sn); /// 算法检查 
    if(result==0) {
        printf("sn: %s is valid.\n", sn);
    } else {
        printf("sn: %s is invalid.\n", sn);
    }
     
    return 0;
}
 
UINT checkSN(UCHAR * sn) {
    UCHAR base[] = "43qnkhd";
    UINT checkSum = 0;
    int n = strlen((char *)sn);
    for(int i=0; i<n; i++) {
        checkSum = checkSum xor base[i] xor sn[i] xor 0x01;
    }
     
    return checkSum;
}
 
void generateSN(UCHAR * sn) {
    UCHAR base[] = "43qnkhd";
    do {
	    randSN(sn); //// 随机填充前6个字符 
    	UINT checkSum = 0;
	    for(int i=0; i<6; i++) { //// 计算前6位checksum 
    	    checkSum = checkSum xor base[i] xor sn[i] xor 0x01;
	    }
    	UINT last = checkSum xor base[6] xor 0x01;
	    sn[6]  = (UCHAR)(last);  //// 修正第7位 
	} while ((sn[6] <= 0x20) || (sn[6] == 0x7F)); //// 最后一位为不可见字符,则重新生成 
    sn[7]  = '\0';
}

void randSN(UCHAR * sn) {
	for(int i=0; i<6; i++) {
		sn[i] = (rand() % 0x5E) + 0x21;
	}
}



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 14:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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