type
status
date
slug
summary
tags
category
icon
password

ezre

  • 首先打开题,找到main函数,简单分析发现有RC4加密以及变表base64加密
notion image
那么整道题围绕RC4进行
  • 提取s1 = v4
变表base64用厨子梭了
notion image
得到解密后的数据
notion image
  • 下断点进行调试,把刚刚的数据past data给input,再F8步过
notion image
 

vm?

DIE查询是有UPX壳的,UPX -d一键去壳没有成功(当时就卡开头了)
再次010editor打开 这里overlay_offset值为p_info字段的文件偏移
notion image
改为F4 00 00 00就可以正常去壳了
notion image
notion image
找到main函数,审计可以得到
点开sub_1815
notion image
点开sub_1989
notion image
result == 0xF8这里0xF8是opcode的最后一位
这里分析出来opcode就是在box中储存,在fun中形成汇编语言进行加密
notion image
分析这段代码 上者在v3的地址4,6,8...18这八个位置存储了 -16,-15...,-9这几个值 下面的在v3地址5,7,9...19这八个位置存储了上面的八个函数
根据分析,在sub_1989函数里面的sub_1916函数用到了这十六个位置,条件就是如果这个result的值为*a1[3](这个值就是box[0]是0xF0)的话返回v3奇数(函数)参数为a1,如果是其他值就返回v3偶数位
这时候使用动调得到了结论,box中的一条完整的指令是在 大于0xF0的机器码之间实现的,不同的0xF*就对应不同指令
继续动调,总结出八个函数对应指令
  • F0 MOV F1 ADD F2 MOD取余 F3 INC递加1 F4 DEC递减1 F5 XOR F6 CMP F7 JMP
翻译如下:(by 咸鱼渊Yuan)
魔改的RC4就是a1[0] += a1[2] 这一步的代码
加密的最后一步异或相当于a1[0] = (a1[0] ^ a1[1]) + a1[2]
提取出key和data
notion image
得到脚本:
polarctf2024春季挑战赛X86汇编语言学习
Loading...
目录
0%
Sh4d0w
Sh4d0w
漫长学习路ing
最新发布
360加固复现学习
2025-6-15
java反射机制
2025-6-14
classLoader机制
2025-6-14
dex文件结构
2025-6-14
APP启动流程
2025-6-14
JNI学习
2025-6-14
公告
Welcome to Sh4dw’s blog!
敬请指导,Q 467194403
 
目录
0%