一起Crack吧
本帖最后由 Joky 于 2020-7-25 15:52 编辑作为新人,分享一个自己写的CrackMe程序,请大家发表一下改进意见,谢谢大家。(未加壳,破解比较容易,大家可以尝试逆向,找出算法。)
成功:
exeinfope查壳,无壳,拖到OD,搜索字符串,找到Failed,下面有个Great在012827E2,双击failed,改成jmp 012827E2,爆破成功
本帖最后由 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;
}
WoShiXXX 发表于 2020-7-24 16:08
exeinfope查壳,无壳,拖到OD,搜索字符串,找到Failed,下面有个Great在012827E2,双击failed,改成jmp 01 ...
请问有什么能阻止爆破吗?我虽然加密了,但对爆破没办法 WoShiXXX 发表于 2020-7-24 16:08
exeinfope查壳,无壳,拖到OD,搜索字符串,找到Failed,下面有个Great在012827E2,双击failed,改成jmp 01 ...
大佬,great咋找到的啊{:301_985:} lizf2019 发表于 2020-7-24 16:41
大佬,great咋找到的啊
就在Failed附近,基本判断是正确的提示(对了,其实楼主应该给个成功截图) WoShiXXX 发表于 2020-7-24 16:43
就在Failed附近,基本判断是正确的提示(对了,其实楼主应该给个成功截图)
改failed成jmp 012827E2之后就崩溃了是啥情况啊{:301_973:} 我是把本来跳到failed的那行je short 00E227FA改成直接跳到great了
lizf2019 发表于 2020-7-24 16:45
改failed成jmp 012827E2之后就崩溃了是啥情况啊
要改注释为failed的那个,不要改其他的 solly 发表于 2020-7-25 01:52
这个密码是一个系统的日期时间转换来的,精确到秒,所以基本只有暴破了。在内存中比较时,将密码64bit的16 ...
分析的完全正确!太厉害了,我得多多向你学习
页:
[1]
2