运行分析
- 因软件版本老旧,需使用windows XP虚拟机运行
- 有个SystemID,值为12345678
- 需破解User ID和Password
PE分析
OD手动脱壳
- 使用windows XP虚拟机,将程序拖入OD
- 按一下F8,ESP变红,根据ESP定律设置硬件断点
- 按一下F9,然后持续F8跟进,直到4017AC,发现上面有个push 0x60,判断4017AC为OEP
- 右键 -> 用Ollydump脱壳调试进程,将修正为地址改为17AA,点击脱壳,保存为1.exe
静态分析&动态调试
- 进入sub_4011B0,注释如上图,逻辑如下:
- 1、Password长度为8
- 2、提取Name每个字符进行计算,得到v6
- 3、将system_id和Password转int
- 4、若v8^v9==v6,返回1,即可弹窗成功
算法分析
from ctypes import *UserID = 'concealbear'
SystemID = '12345678'v6 = c_uint32(305419896)
for i in range(len(UserID)):v6.value = ((2 * v6.value) | (v6.value >> 7)) ^ ord(UserID[i])Password = hex(int(SystemID,16) ^ v6.value)[2:]print(UserID + '的Password为:\n' + Password)