Joky 发表于 2020-7-24 13:16

一起Crack吧

本帖最后由 Joky 于 2020-7-25 15:52 编辑

作为新人,分享一个自己写的CrackMe程序,请大家发表一下改进意见,谢谢大家。(未加壳,破解比较容易,大家可以尝试逆向,找出算法。)
成功:

WoShiXXX 发表于 2020-7-24 16:08

exeinfope查壳,无壳,拖到OD,搜索字符串,找到Failed,下面有个Great在012827E2,双击failed,改成jmp 012827E2,爆破成功

solly 发表于 2020-7-25 01:52

本帖最后由 solly 于 2020-7-25 02:01 编辑

这个密码是一个系统的日期时间转换来的,精确到秒,所以基本只有暴破了。在内存中比较时,将密码64bit的16进制数据按字节反序转换成26进制大字字符后再进行比较。

1、暴破位置如下:



004027DE   .85C0          test eax,eax                           ;
004027E0      74 18         je short CrackMe1.004027FA               ;nop 掉这个 je 即暴破



2、算法:
#include <iostream>
#include <windows.h>

int main(int argc, char** argv) {
        long long cmpDateTime = 0x0483F078DD478000;
        long long subDateTime = 0x019DB1DED53E8000;
        long long dateTime = 0;
       
        FILETIME * lpFileTime = (FILETIME *)&dateTime;
       
        GetSystemTimeAsFileTime(lpFileTime);
       
        dateTime -= subDateTime;

        if(dateTime < cmpDateTime) {
                dateTime /= 0x00989680;
        }
       
    dateTime &= 0xFFFFFFFF;

        //printf("password: 0x%016X, %llu\n", dateTime, dateTime);
        printf("password: %llu\n", dateTime);

        //// encode
        char buff;
        int i= 0;
        while(dateTime>0) {
                buff = ((dateTime & 0xFF) % 26) + 0x41;/// convertToUppcaseChar
                dateTime >>= 8;
        }
        buff = '\0';
       
        printf("encoded password: %s\n", buff);//// 用于内存中字符串比较

        return 0;
}

Joky 发表于 2020-7-24 16:29

WoShiXXX 发表于 2020-7-24 16:08
exeinfope查壳,无壳,拖到OD,搜索字符串,找到Failed,下面有个Great在012827E2,双击failed,改成jmp 01 ...

请问有什么能阻止爆破吗?我虽然加密了,但对爆破没办法

lizf2019 发表于 2020-7-24 16:41

WoShiXXX 发表于 2020-7-24 16:08
exeinfope查壳,无壳,拖到OD,搜索字符串,找到Failed,下面有个Great在012827E2,双击failed,改成jmp 01 ...

大佬,great咋找到的啊{:301_985:}

WoShiXXX 发表于 2020-7-24 16:43

lizf2019 发表于 2020-7-24 16:41
大佬,great咋找到的啊

就在Failed附近,基本判断是正确的提示(对了,其实楼主应该给个成功截图)

lizf2019 发表于 2020-7-24 16:45

WoShiXXX 发表于 2020-7-24 16:43
就在Failed附近,基本判断是正确的提示(对了,其实楼主应该给个成功截图)

改failed成jmp 012827E2之后就崩溃了是啥情况啊{:301_973:}

0x5f375a86 发表于 2020-7-24 17:43

我是把本来跳到failed的那行je short 00E227FA改成直接跳到great了

WoShiXXX 发表于 2020-7-24 19:03

lizf2019 发表于 2020-7-24 16:45
改failed成jmp 012827E2之后就崩溃了是啥情况啊

要改注释为failed的那个,不要改其他的

Joky 发表于 2020-7-25 06:56

solly 发表于 2020-7-25 01:52
这个密码是一个系统的日期时间转换来的,精确到秒,所以基本只有暴破了。在内存中比较时,将密码64bit的16 ...

分析的完全正确!太厉害了,我得多多向你学习
页: [1] 2
查看完整版本: 一起Crack吧