XBOOT大佬說有一顆加密IC而且是透過I2C介面傳輸,於是搜尋一下I2C字眼
$ grep -i i2c usr/trimui/ -r Binary file usr/trimui/bin/MainUI matches Binary file usr/trimui/apps/cdogs/music/game/space_dimensions_8bit.ogg matches Binary file usr/trimui/lib/libarelink.so matches
P.S. Arelink安瑞易连
開啟libarelink.so,果真有I2C副程式
發現寶庫
開啟MainUI去找尋trimui_arelink_req_enc_dec就可以看到關鍵字/tmp/.cmdenc
再度搜尋一下
$ grep cmdenc . -r Binary file ./usr/trimui/bin/MainUI matches Binary file ./root/gameloader matches ./etc/init.d/main: if [ -f /tmp/.cmdenc ] ; then ./main: if [ -f /tmp/.cmdenc ] ; then
P.S. /etc/init.d/main
/etc/init.d/main
if [ -f /tmp/.cmdenc ] ; then /root/gameloader elif [ -f /tmp/cmd_to_run.sh ] ; then chmod a+x /tmp/cmd_to_run.sh /tmp/cmd_to_run.sh rm /tmp/cmd_to_run.sh fi
P.S. 透過gameloader做後續的動作
開啟gameloader就可以看到/tmp/.cmdenc相關資訊,長度是256
於是,司徒修改測試
if [ -f /tmp/.cmdenc ] ; then dd if=/dev/urandom of=/tmp/.cmdenc bs=1 count=256 /root/gameloader
司徒使用FC 1942遊戲測試
trimui_sunxi_gpio_init: ver Aug 1 2020 serial: 00000002ED file /tmp/.cmdenc len=256 DEC1: [ 17.423914] write len=256 [ 17.820278] exec! there result of call_usermodehelper is 0 [ 17.826401] exec! the process is "gameloader", pid is 183. [ 17.832694] BASE64:0wiSJBoxSQ/reYr9IPNlu0XPhZ3kv6xh0WwuWz36EDlzvzxTFL+JUQCWXtSWVLJQ1rwI+4Ul3yGYusGOe9GNvWf+X46ZmNg7J8xXuYcc1BNn/l+OmZjYOyfMV7mHHNQTZ/5fjpmY2DsnzFe5hxzUE2f+X46ZmNg7J8xXuYc= bye
拿掉測試那行,重新載入FC 1942遊戲,則顯示如下
trimui_sunxi_gpio_init: ver Aug 1 2020 serial: 00000002ED file /tmp/.cmdenc len=256 DEC1: cd /usr/trimui/bin/;HOME=/mnt/SDCARD/Roms/FC/ /usr/trimui/bin/fceux "/mnt/SDCARD/Roms/FC//1942[MS漢化](JU)[STG](0.31Mb).nes" [ 25.267101] write len=256
/tmp/.cmdenc
加密IC是負責字串的加解密,於是,司徒找了一下MainUI
接著把呼叫加解密Patch成NOP
測試一下
Load nes rom cd /usr/trimui/bin/;HOME=/mnt/SDCARD/Roms/FC/ /usr/trimui/bin/fceux "/mnt/SDCARD/Roms/FC//1942[MS漢化](JU)[STG](0.31Mb).nes" sth wrong, encoded != decoded !!!!
接著看一下MainUI寫出的檔案
# ls -al drwxrwxrwt 3 root root 120 Jan 1 00:00 . drwxr-xr-x 19 root root 4096 Jan 1 00:00 .. -rw-r--r-- 1 root root 256 Jan 1 00:00 decode -rw-r--r-- 1 root root 256 Jan 1 00:00 encode -rw-r--r-- 1 root root 424 Jan 1 00:00 game_output.txt drwxr-xr-x 2 root root 60 Jan 1 00:00 log # cat /tmp/decode /mnt/SDCARD/Roms/FC//1942[MS漢化](JU)[STG](0.31Mb).nes
接著修改一下
if [ -f /tmp/.cmdenc ] ; then echo "#!/bin/sh" > /tmp/run.sh echo "cd /usr/trimui/bin/;HOME=/mnt/SDCARD/Roms/FC/ /usr/trimui/bin/fceux \"" >> /tmp/run.sh cat /tmp/decode >> /tmp/run.sh echo "\"" >> /tmp/run.sh chmod +x /tmp/run.sh /tmp/run.sh #/root/gameloader elif [ -f /tmp/cmd_to_run.sh ] ; then chmod a+x /tmp/cmd_to_run.sh /tmp/cmd_to_run.sh rm /tmp/cmd_to_run.sh fi
接著,再度載入FC 1942遊戲,成功繞過加密IC