吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3061|回复: 18
收起左侧

[CrackMe] 本人的第一个,一个奇怪的cm,有反调试和不算花指令的花指令

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

本帖最后由 ttbbs 于 2021-11-27 16:43 编辑

成功案例(需要控制台运行)

自己觉得有点难,期待大佬来挑战
目前只有人爆破,但希望给出算法

你们要的源码:
[C++] 纯文本查看 复制代码
#include <iostream>
#include <cstdio>
#include <windows.h>
#include <time.h>

typedef NTSTATUS(NTAPI* pfnNtSetInformationThread)(_In_ HANDLE ThreadHandle, _In_ ULONG ThreadInformationClass,
    _In_ PVOID ThreadInformation, _In_ ULONG ThreadInformationLength);
int tii;
void anti_debug_by_HideFromDebugger(void) {
    HMODULE ntdll = LoadLibrary(TEXT("ntdll.dll"));
    if (ntdll == NULL) {
        abort();
    }

    pfnNtSetInformationThread ntSetInfoThread = (pfnNtSetInformationThread)GetProcAddress(ntdll, "NtSetInformationThread");
    if (ntSetInfoThread == NULL) {
        abort();
    }

    ntSetInfoThread(GetCurrentThread(), 0x11, NULL, 0);

}
void anti_debug_by_CheckRemoteDebuggerPresent(void) {
    BOOL isRemoteDebuggerPresent = FALSE;
    if (CheckRemoteDebuggerPresent(GetCurrentProcess(), &isRemoteDebuggerPresent)) {
        if (isRemoteDebuggerPresent == TRUE) {
            ExitProcess(0);

        }
    }
}
int ti() {
    return int(clock());
}
int checker() {
    __asm {
        call anti_debug_by_CheckRemoteDebuggerPresent
        pushad
        push s6
        mov ecx, s5
        mov eax, 0xC3000000
        s5:mov ebx, ecx
        cmp ecx, 0x0
        je junkcode3
        sub ecx, 0x1
        jmp ebx

        junkcode3 :
        clc
            cmc
            mov eax, 0
            jmp junkcode4

            s6 : add eax, s4 - 0xC3000000
            mov ecx, s7
            mov edx, 0xD0FF1716
            s7 : mov ebx, ecx
            sub ebx, 4
            cmp ecx, 0x0
            je junkcode4
            sub ecx, 0x1
            jmp ebx

            junkcode4 :
        clc
            cmc
            mov eax, 1

            jmp junkcode3

            s4 : add esp, 0x4
            popad
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            shl tii,2
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            clc
            cmc
            


    }
    anti_debug_by_HideFromDebugger();
}
int main()
{
    int ps;
    tii = ti();
    int tii1 = ti();
    checker();
    __asm {
        call anti_debug_by_CheckRemoteDebuggerPresent
        pushad
        push s2
        mov ecx, s1
        mov eax, 0xC3000000
        s1:mov ebx, ecx
        cmp ecx, 0x0
        je junkcode
        sub ecx, 0x1
        jmp ebx

        junkcode :
        clc
            cmc
            mov eax, 0
        jmp junkcode2

            s2 : add eax, s4 - 0xC3000000
            mov ecx, s3
            mov edx, 0xD0FF1716
            s3 : mov ebx, ecx
            sub ebx, 4
            cmp ecx, 0x0
            je junkcode2
            sub ecx, 0x1
            jmp ebx

            junkcode2 :
        clc
            cmc
            mov eax,1

            jmp junkcode

            s4 : add esp, 0x4
            popad
    }
    if (clock() - tii1 > 1000) ExitProcess(0);
    std::cout << "password?";

    std::cin >> ps;
    tii = tii + tii1;
    if (ps == tii) {
        std::cout << "success";
    }
    else
    {
        ExitProcess(0);
    }
}

本帖子中包含更多资源

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

x

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
搜索曾经的回忆 + 1 + 1 用心讨论,共获提升!

查看全部评分

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

头像被屏蔽
wanlinwo 发表于 2021-11-23 08:45
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
chenyouyou 发表于 2021-11-23 10:51
czyr 发表于 2021-11-21 18:59
不整了直接上吧

本帖子中包含更多资源

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

x

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ttbbs + 1 + 1 用心讨论,共获提升!

查看全部评分

 楼主| ttbbs 发表于 2021-11-21 19:45
czyr 发表于 2021-11-21 18:59
不整了直接上吧

爆破?希望能给出算法哦!
czyr 发表于 2021-11-21 20:28
ttbbs 发表于 2021-11-21 19:45
爆破?希望能给出算法哦!

能爆破的要算法有什么意义
搜索曾经的回忆 发表于 2021-11-21 20:40
没看懂什么意思,确定跟输入内容有关?
头像被屏蔽
gaomenggao 发表于 2021-11-22 11:12
提示: 该帖被管理员或版主屏蔽
 楼主| ttbbs 发表于 2021-11-22 11:25
gaomenggao 发表于 2021-11-22 11:12
能破解的要算法有什么意义?

请不要恶意灌水,发之前的人发过的
搜索曾经的回忆 发表于 2021-11-22 20:23
能否公布下原理
 楼主| ttbbs 发表于 2021-11-22 20:51
本帖最后由 ttbbs 于 2021-11-22 20:54 编辑

周末发源码,主要是靠读取时间经过运算得密码,再与输入的密码做比对
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 12:09

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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