天天看點

Switch APP逆向分析

Switch APP逆向分析

最近學習pwn,看到一個switch的逆向題目,于是乎在浩然表哥和the one表哥的幫助下研究了一波,學到了很多不可描述的知識。題目的下載下傳位址:

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

複制

下載下傳題目附件後,根據擴充名使用Wireshark分析

Switch APP逆向分析

不難發現,流量包中均為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           

複制

Switch APP逆向分析

我們将nop指令之前的内容全部删除掉,将檔案另存為新的bin檔案即可

Switch APP逆向分析

我們大緻了解了其架構,使用ida打開目标檔案,Load file時按照如下選項配置

Switch APP逆向分析

Rebase the whole program

Switch APP逆向分析

通過查找交叉引用以及上下文分析,可以查找到該函數像是解密函數

Switch APP逆向分析

主要邏輯為對每個位元組AND上一個0x7F

Switch APP逆向分析
Switch APP逆向分析

将0x4001CCAD處的資料導出

Switch APP逆向分析

編寫腳本進行解密:

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 APP逆向分析

還是太菜,很多東西沒有分析明白,而且買來的switch好像還沒用上,不過分手廚房很好玩....

Switch APP逆向分析