xtex's Blog

Some simply crackmes Writeup

2021-10-15 12:00:00 +08:00

文件链接

简单使用

这是一个由用户名和 License-Key 组成的校验程序,其中,LicKey 需要至少 17 位且其中包含KEY,校验失败后会重试,直接扔进 Ghidra

定位

Ghidra 直接自动识别出了_main函数,点进去就是了,然后反编译的代码中往下翻可以找到Username:License-Key字样,简单的命名之后是这样的

然后往下翻,忽略没用的错误提示,可以找到这两段代码

前面检查了用户名,后面检查了 LicKey,两者 demangle 之后都是___gnu_cxx::__enable_if<std::__is_char<char>::__value, bool>::__type std::operator==<char>(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)(直接文本比较),于是可以直接知道local_a0local_104就是对应着正确的用户名和密码。

解密

返回到_main前面,可以看到一大堆类似于这样的代码

全部 demangle 之后很明显能看到拼接了字符串

测试后发现,crck_me就是 UserName,同理,$2833-15431-51KEY就是 LicKey