D3arm


D3CTF-REVER-DMARM

0x1 观察文件

0

bin文件拉入ida 把前面几个数据 按d转换为ddouble形式 第一个为ram基址 第二个为rom代码开始的地址

0x2 分析文件

1

拉进ida32位 选择小端 arm

2

3

选择ARMv7-M

4

进去输入地址段 记得点击上面的creat RAM创建 图片这里忘记点了 不然引用0x2000000这里会报红

5

先按C 再按P转换为函数 这时候大部分的函数分析出来了,但是关键加密位置没有

6

7

搜索main字符串

8

找到关键位置

9

10

搜索flag

11

点击fouce analyze会转换为代码 这里转换为字符串

12

ctrl+x 引用 如果没有引用 观看我引用的地址 自己跳转过去 按c 再按p

13

找到关键判断位置

14

再次引用 ,如果没有还是一样,自己跳转过去 c p

15

算法关键判断位置

16

找到加密数据

17

引用异或的值 找到赋值的位置

18

发现最终只是 0x335E44 循环取两位

0x3 解密代码

key = [0x44,0x5e,0x33]
a = [
  0x20,0x6D,0x50,0x30,0x38,0x48,0x75,0x69,0x50,
  0x75,0x6B,0x56,0x20,0x6D,0x04,0x26,0x6A,0x51,
  0x72,0x6B,0x50,0x73,0x38,0x0B,0x74,0x6A,0x57,
  0x70,0x6E,0x50,0x25,0x3A,0x51,0x22,0x6E,0x56,
  0x75,0x3D,0x50,0x72,0x6A,0x4E
]
for i in range(len(a)):
	print(chr(a[i]^key[i%3]),end='')
# d3ctf{17c15ed37b4b65c7f804d40cadbf0e1cc64}

0x4总结

学到了用ida反汇编arm 和如何分析


文章作者: Blue
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Blue !
评论
  目录