[SUCTF2019]Akira Homework

文章讲述了在处理一个加密程序时遇到的反调试技术,包括基址随机化、TLS中的反调试措施,以及如何通过修改代码、密码检查和解密(如AES)来绕过检测。作者还提到使用静态分析和在线工具进行AES解密的过程。
摘要由CSDN通过智能技术生成

好多好多反调试 还是值得记录下的

程序开启了基址随机化 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!}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值