好多好多反调试 还是值得记录下的
程序开启了基址随机化 CFF打开在可选头的dll characteristics去掉dllcanmove即可
在Tls里有反调试
这个好办 直接强制jmp
接下来还是会检测到debug
findcrypt发现md5和aes特征
startaddress里的`sub_140008B20`也是反调试
这里用快照获取进程信息 并进行了md5比较
把 exit(-1) if 处改为jmp强制跳转
startaddress的另一个函数也是一大堆反调试
这些都有很简便的方法:
把if处的jz/jnz 全部改为 jmp 再F5一下 apply patch to file 就能绕过
这几个点改完后动调就能正常进行了
首先过掉一个简单的password check
v9 = [0x2F, 0x1F, 0x20, 0x2E, 0x34, 0x04, 0x37, 0x2D, 0x10, 0x39, 0x7C, 0x22, 0x7B, 0x75, 0x0A, 0x38, 0x39, 0x21]
for i in range(len(v9)):
v9[i] ^= 0x45
v8 = [1,5,4,2,3,0]
password = [0]*0x12
for k in range(0x12):
v7 = k%6
v5 = v8[v7]+6*(k//6)
password[v5] = v9[k]^v5
for c in password:
print(chr(c),end='')
# Akira_aut0_ch3ss_!
接下来可以跟踪到这里
这个数组很大 解完后以`MZ`开头 所以是解密出一个PE 但交叉引用发现后续函数还有继续解密的操作 所以现在不能直接提取出来
解完setevent后回到main函数执行`sub_1400093B0`
所以这里是有验签?
后续需要成功读取`WinRev.exe:signature`
如果没读取成功就是 have no sign
如果有sign 后续进行了md5比较
提取出md5在线解!
Windows下用`type xx.txt>>WinRev.exe:signature`
注意要用cmd而不是powershell!
成功写入
后面应该是一个虚函数调用 直接动调找函数即可
前面分析StartAddress处漏了个点
有关键的dll操作
对函数下个断点看看流程
甚至还有一个 singlestep这种高级反调试...
虽说也能绕过 但就直接静态分析吧。。。 (发现只要不下在开头就行...)
直接动调跟完三个handle
到这里
导出这部分数据
写入bin
IDA打开
findcrypt找到AES加密
`sub_180002800`就是AES
那么 `Ak1i3aS3cre7K3y`就是key
注意这里的密文是在主exe传进来的!
提出来解一个AES即可 先将密文hex b64编码一下再解
但很多在线网站都解不出来...
还得是这个
AES在线解密 AES在线加密 Aes online hex 十六进制密钥 - The X 在线工具
很多网站解不出来的原因: key的长度本身不对(bit数不对齐...) 最后一个`"`不能取...
hex也可以解
flag{Ak1rAWin!}