😇
牛牛的安全 Odin
  • 个人介绍
  • 数据安全
  • 工控安全
    • 工控概念
  • 车联网安全合规
    • R155
    • CSMS\VTA
    • GDPR认证
  • 车联网安全
    • 漏洞订阅
    • 汽车攻击时间轴
    • 汽车信息安全研究
      • 车厂安全需求 Custom Requirement
      • 安全威胁
      • 参考文章
      • Who’s Behind the Wheel?
      • 安全研究基础
      • 智能网联汽车安全渗透指标
      • 智能网联汽车软件安全测试关键技术研究
      • 基于硬件在环的整车控制器功能安全测试技术研究
      • 智能网联汽车信息安全解决方案
      • 自动驾驶汽车的安全性-识别挑战
    • ECU逆向案例
      • 特斯拉攻击链
      • 汽车动力系统ECU固件逆向工程初探
  • 物联网安全
    • IoT 技术和协议
    • 智能设备常规测试思路总结
    • 各种调试接口(SWD、JTAG、Jlink、Ulink、STlink)的区别
    • QEMU 系统仿真
      • 如何“用 QEMU 模拟它”
      • 处理加密的路由器固件
    • 自动分析Automated Approach
    • IOT渗透测试(一)
    • 物联网安全目录
  • 固件分析案例
    • 智能门锁、手环
      • MCU固件反汇编
      • 云丁鹿客门锁中bootloader和FreeRTOS的分析
      • 云丁鹿客门锁BLE通信的分析(下)
      • 云丁鹿客门锁BLE通信的分析(中)
      • 云丁鹿客门锁BLE通信的分析(上)
      • 华为智联旗下小豚AI摄像头的完整分析(下)
      • 华为智联旗下小豚AI摄像头的完整分析(上)
      • 海康萤石智能门锁的网关分析(4)
      • 海康萤石智能门锁的网关分析(3)
      • 海康萤石智能门锁的网关分析(2)
      • 海康萤石智能门锁的网关分析(1)
      • idapython编写和调试
      • 果加智能门锁的全面分析(下)
      • 果加智能门锁的全面分析(中)
      • 果加智能门锁的全面分析(上)
      • BLE智能手环
      • 耶鲁智能门锁的简单测试(下)
      • 耶鲁智能门锁的简单测试(上)
      • 耶鲁门锁漏洞
      • 对一款BLE灯泡的分析
      • BLE协议栈与Android BLE接口简介
    • 在IoT设备中查找端口对应进程的四种方法
    • 路由器命令执行
    • 对基于Philips TriMedia CPU的网络摄像机进行逆向工程
    • 从Microsoft Band以及 Hello Sense 设备中提取自己的历史数据
    • CVE-2021-22909- 深入研究 UBIQUITI 固件更新错误
    • 复现|摄像头固件重打包
    • Dlink_DWR-932B路由器固件分析
    • 针对小米九号平衡车的无接触式攻击
    • 记一次智能印章设备的漏洞挖掘
  • APP 逆向
    • Go二进制文件逆向分析从基础到进阶——综述
    • Switch APP逆向分析
  • 传统静态代码分析
    • 静态分析案例
      • ELF恶意软件的静态分析原理和方法(上)
      • ELF恶意软件的静态分析原理和方法(下)
    • 静态代码分析工具清单
    • 企业级静态代码分析工具清单
  • 应用安全测试
    • DAST、SAST、IAST
    • IAST 工具初探
  • 芯片架构
    • ARM指令集概念
    • ARM指令集
    • 冯·诺伊曼结构
    • 指令集
    • 处理器架构、指令集和汇编语言,三者有何关系?
  • 病毒分析
    • 熊猫烧香
  • 编程知识
    • REST API 教程
  • 流量分析工具
    • 卡巴斯基开源的智能手机流量劫持工具
    • 利用 Burp Suite 劫持 Android App 的流量(二)
    • 利用 Burp Suite 劫持 Android App 的流量(一)
  • 区块链安全
    • 安全多方计算
    • Chainalysis 团队从区块链的角度分析发现 2020 年最大的 4 起勒索软件攻击实现存在关联
  • 攻击案例
    • 特斯拉Powerwall网关可能受到黑客攻击
  • 移动应用
    • Mac上使用Charles抓包
    • 手机抓包工具汇总
    • APP渗透测试流程和技巧大全
    • 加壳和脱壳
    • 浅谈 Android Dex 文件
    • 移动应用漏洞分析样例分享
    • 移动应用常见漏洞分析
    • 移动应用漏洞分析工具介绍
    • 渗透测试流程详解 及 移动APP安全测试要点
    • Frida Android hook
  • 安全设计
    • 【软件安全设计】安全开发生命周期(SDL)
Powered by GitBook
On this page
  1. APP 逆向

Switch APP逆向分析

PreviousGo二进制文件逆向分析从基础到进阶——综述Next传统静态代码分析

Last updated 3 years ago

最近学习pwn,看到一个switch的逆向题目,于是乎在浩然表哥和the one表哥的帮助下研究了一波,学到了很多不可描述的知识。题目的下载地址:

https://www.icloud.com/iclouddrive/0ZkKpgouFpOW-DbEHvDSL2taQ#switch

下载题目附件后,根据扩展名使用Wireshark分析

不难发现,流量包中均为USB流量,猜测可能是通过USB传输了该APP,使用如下命令提取出传输的文件:

tshark -r switch.pcapng -Y 'usb.capdata and usb.device_address==4' -T fields -e usb.pcapng > raw

将文本16进制转换为二进制格式

xxd -r -p raw raw.out

我们将nop指令之前的内容全部删除掉,将文件另存为新的bin文件即可

我们大致了解了其架构,使用ida打开目标文件,Load file时按照如下选项配置

Rebase the whole program

通过查找交叉引用以及上下文分析,可以查找到该函数像是解密函数

主要逻辑为对每个字节AND上一个0x7F

将0x4001CCAD处的数据导出

编写脚本进行解密:

ciphertext = [  0xE5, 0xF2, 0xE5, 0xA7, 0xF3, 0xA0, 0xE9, 0xEE, 0xE6, 0xEF,   0xA0, 0xE6, 0xF2, 0xEF, 0xED, 0xA0, 0xE6, 0xF5, 0xF3, 0xE5,   0xA0, 0xA8, 0xC8, 0xD7, 0xC9, 0xA9, 0xBA, 0xA0, 0xA5, 0xF3,   0x8A, 0x80, 0x00, 0xD9, 0xEF, 0xF5, 0xF2, 0xA0, 0xF0, 0xF2,   0xE5, 0xE3, 0xE9, 0xEF, 0xF5, 0xF3, 0xA0, 0xF0, 0xF2, 0xE9,   0xF6, 0xE1, 0xF4, 0xE5, 0xA0, 0xEB, 0xE5, 0xF9, 0xA8, 0xD3,   0xC2, 0xCB, 0xA9, 0xBA, 0xA0, 0xA5, 0xF3, 0x8A, 0x80, 0x00,   0xD3, 0xC2, 0xCB, 0xA0, 0xC1, 0xC5, 0xD3, 0xC5, 0xA0, 0xB0,   0xA0, 0xA8, 0xF3, 0xEF, 0xED, 0xE5, 0xA0, 0xF2, 0xE1, 0xEE,   0xE4, 0xEF, 0xED, 0xA0, 0xF4, 0xE8, 0xE9, 0xEE, 0xE7, 0xF3,   0xA0, 0xE5, 0xEE, 0xE3, 0xF2, 0xF9, 0xF0, 0xF4, 0xE5, 0xE4,   0xA0, 0xE2, 0xF9, 0xA0, 0xF9, 0xEF, 0xF5, 0xF2, 0xA0, 0xEB,   0xE5, 0xF9, 0xA9, 0xBA, 0xA0, 0xA5, 0xF3, 0x8A, 0x80, 0x00,   0x8A, 0xD4, 0xE8, 0xE9, 0xF3, 0xA0, 0xE3, 0xF2, 0xE1, 0xE3,   0xEB, 0xED, 0xE5, 0xA0, 0xF2, 0xE5, 0xAD, 0xF5, 0xF3, 0xE5,   0xA0, 0xED, 0xEF, 0xF3, 0xF4, 0xEC, 0xF9, 0xA0, 0xF4, 0xE8,   0xE5, 0xA0, 0xE3, 0xEF, 0xE4, 0xE5, 0xF3, 0xA0, 0xE6, 0xF2,   0xEF, 0xED, 0xA0, 0xF2, 0xE1, 0xEA, 0xEB, 0xEF, 0xF3, 0xF4,   0xEF, 0xAE, 0xA0, 0xE8, 0xF5, 0xE7, 0xE5, 0xA0, 0xF4, 0xE8,   0xE1, 0xEE, 0xEB, 0xF3, 0xFE, 0x8A, 0x80, 0x00, 0xC8, 0xE5,   0xF2, 0xE5, 0xA7, 0xF3, 0xA0, 0xF9, 0xEF, 0xF5, 0xF2, 0xA0,   0xF0, 0xF2, 0xE5, 0xE3, 0xE9, 0xEF, 0xF5, 0xF3, 0xA0, 0xE6,   0xEC, 0xE1, 0xE7, 0xA1, 0xA1, 0x8A, 0xE6, 0xEC, 0xE1, 0xE7,   0xFB, 0xE3, 0xF6, 0xF6, 0xE4, 0xDF, 0xF3, 0xF7, 0xB1, 0xF4,   0xE3, 0xE8, 0xAD, 0xE8, 0xB0, 0xED, 0xE5, 0xE2, 0xF2, 0xB3,   0xF7, 0xAD, 0xE9, 0xF3, 0xAD, 0xE2, 0xF2, 0xB8, 0xEC, 0xE9,   0xE1, 0xEE, 0xF4, 0xFD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00]
flag = ""
for i in ciphertext:  flag+= chr(i & 0x7f)
print(flag)

还是太菜,很多东西没有分析明白,而且买来的switch好像还没用上,不过分手厨房很好玩....