运行分析
 

 
- 因软件版本老旧,需使用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)
 
