陇原战'疫'
power
题目说是arm汇编
用 Resource Hacker 打开
发现S盒
然后搜索找到main函数
发现第1253行
.size ZN3aes14encryption_cbcEPcS0, .-ZN3aes14encryption_cbcEPcS0
aes 和 cbc
所以可以肯定是aes加密 是不是cbc模式难说
找到16位密钥
this_is_a_key!!!
接着找到密文
1030a9254d44937bed312da03d2db9adbec5762c2eca7b5853e489d2a140427b
之后可以用在线网站aes解码
使用cbc模式解码失败 换成ecb模式成功
放上个脚本:
1 |
|
flag{y0u_found_the_aes_12113112}
findme
32位 无壳 ida32打开
找到main函数 发现字符串长度为26
之后根据主函数中的 off_403844 找到 sub_401866 函数 并进入
发现函数是RC4加密
关键点在于第39行的函数 sub_401767 和第42行的 dword_403040 值
先取出dword的值
0xB7, 0xFF, 0xFF, 0xFF, 0x52, 0x00, 0x00, 0x00, 0x85, 0xFF,
0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0x90, 0xFF, 0xFF, 0xFF,
0xE9, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xB8, 0xFF,
0xFF, 0xFF, 0xE4, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00,
0xC3, 0xFF, 0xFF, 0xFF, 0xBD, 0xFF, 0xFF, 0xFF, 0x1D, 0x00,
0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0x85, 0xFF, 0xFF, 0xFF,
0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00,
0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xAF, 0xFF, 0xFF, 0xFF,
0xEF, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x32, 0x00,
0x00, 0x00, 0xB5, 0xFF, 0xFF, 0xFF, 0x11, 0x00, 0x00, 0x00,
0xC6, 0xFF, 0xFF, 0xFF
进行整理:
0xB7,0x52,0x85,0xC1,0x90,0xE9,0x07,0xB8,0xE4,0x1A,
0xC3,0xBD,0x1D,0x8E,0x85,0x46,0x00,0x21,0x44,0xAF,
0xEF,0x70,0x32,0xB5,0x11,0xC6
之后我们需要动调来获得加密后的字符串的值
断点如下
main函数的
sub_401866 函数的
之后动调
输入值
12345678901234567890123456
F7 F9 进入函数 sub_401767
两个窗口对照查看
首先我们先运行到for循环的最后一行 也就是第21行
之后我们在 IDA View 中进行单步F8 运行到for循环第一轮结束时候 也就是
现在我们可以看到 [eax] 里存放的值 是我们输入的值
dl 的值 也就是 xor edx,ecx 中edx的值 是
所以我们输入的第一个值 0 经过函数 sub_401767 加密后 变成了 D5
之后我们可以 通过单步F8的值记录 EDX 的值
也可以在 sub_401866 函数的第40行继续下断点
F9执行出来之后F8运行到main函数断点下 回头找到 inputt 的值
0xD5, 0x25, 0xE2, 0xB6, 0xF1, 0x99, 0x4B, 0xD4, 0xB5, 0x1B,
0x81, 0xD0, 0x47, 0x8F, 0xEF, 0x35, 0x05, 0x46, 0x48, 0xEB,
0x8C, 0x21, 0x6C, 0xB8, 0x05, 0x8D
已知是RC4 加密
用假密文异或假明文得到密钥流,然后用密钥流对密文进行异或得到明文
可以写脚本求出flag
1 |
|
flag{Th1s_i5_E2_5tRcm9!}
EasyRE_Revenge
查壳 ida打开
找到main函数
简单分析一下
进入 sub_411F4 函数中 发现数据出错
找到出错位置 并向下查看 发现
很明显 要用idc代码除去花指令 (快捷键 shift+f2)
(也可以手动nop 这里是先手动nop 然后找出不需要nop的关键数据 再写脚本)
附上官方idc脚本(自己写不出来。。)
1 |
|
之后在有问题的起始地址 p 创建函数 之后查看
我的效果:
官方的效果:
不仅不好看而且还少了一位。。。
好像少了不止一位 一行也没有了
Exp:
1 |
|
flag{bd6a64f17bb3dc065b41a0aad1e48e98}
O
参考:https://hackmd.io/@crazyman/SkyAgiK4F#Reverse
emo了