玩CrackMe
2021-10-15 共 1932 字§ 简单使用
这是一个由用户名和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_a0
和local_104
就是对应着正确的用户名和密码。
§ 解密
返回到_main
前面,可以看到一大堆类似于这样的代码
全部demangle之后很明显能看到拼接了字符串
测试后发现,crck_me
就是UserName,同理,$2833-15431-51KEY
就是LicKey
§ 本文历史
- 2021.12.17:编写本文