运行分析
- 需破解Code
PE分析
- upx壳,32位
- 执行linux命令:upx -d serialme.exe
- 脱壳成功,发现是asm程序
静态分析&动态调试
- ida搜索字符串
- func_1是通过Code长度和每一位字符相加得到i,i必须等于0xAB
- func_2作用是判断Code某些位置的值是否符合要求,如上图
- func_3判断Code长度为12,满足func_2判断
- 还需要修补a3的值,即进行爆破
- 切换至汇编代码,将40143A地址NOP
脚本
Code = 'a2-183935011'
n = len(Code)
for i in (1,4,8):
n += ord(Code[i])
print(hex(n&0xff))
通过尝试得出Code的一个值为a2-183935011
- 验证成功