发布题目的时候做了一下……感觉还是挺简单的,但是最后凑字符串的那一步没做出来有点可惜。
帖子发的比较少,格式可能有点问题。
0x01 导入OD
似乎有壳,被加密过。PEID 0.2查不出壳,直接丢到哈勃。
0x02 查壳
[C] 纯文本查看 复制代码 基本信息
关键行为
进程行为
文件行为
其他行为
基本信息
文件名称:
CrackMe.exe
MD5: 4b15e259c525a1f39d2ff779d0f10e07
文件类型: EXE
上传时间: 2021-03-01 19:24:47
出品公司: N/A
版本: N/A
壳或编译器信息: PACKER:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
子文件信息: 详情
0x03 运行一下看看
知道是什么壳之后,先不脱,进去看看
随便输点东西看看
返回OD,运行到主程序 查找字符串,没有内容,重载
0x04 字符串
开局ESP定律进入口
查找字符串
[Asm] 纯文本查看 复制代码 中文搜索引擎, 条目 0
地址=00091002
反汇编=push CrackMe.000BAC0C
文本字符串=HappyNewYear
中文搜索引擎, 条目 13
地址=0009214A
反汇编=push CrackMe.000BAC1C
文本字符串=52PoJie
中文搜索引擎, 条目 14
地址=000922AE
反汇编=mov edx,CrackMe.000BAC24
文本字符串=Success
发现以下内容,文本未被加密,就不脱壳好了。
0x05 进入HappyNewYear关键字
内存断点-访问
输入程序后没有停下来,大概率猜测他是密码最后内容
0x06 进入52PoJie关键字
同上
0x07 字典
可能的口令
[C] 纯文本查看 复制代码 52PoJie
2021
HappyNewYear
字符串排列组合
[C#] 纯文本查看 复制代码 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
const string a = "52PoJie", b = "2021", c = "HappyNewYear";
Console.WriteLine(a+b+c);
Console.WriteLine(a+c+b);
Console.WriteLine(b+a+c);
Console.WriteLine(b+c+a);
Console.WriteLine(c+a+b);
Console.WriteLine(c+b+a);
}
}
}
去凑凑看吧
|