BBR-4MG::ファームウェア改造

シリアルポート経由でファームウェアをアップロードできるようになったので,多少のトラブルなら怖くありません.そこで,少しファームウェアを解析して弄ってみることにしました.

注意

現在,ファームウェアをダウンロードしようとすると,解析等を禁止するラインセンスが表示されるようになってます.ダウンロードした場合,それに同意したこととなりますので,そのファームウェアの解析・改造等は契約上できません.

よって,細かいことは古いファームウェアについてしか分からないので,参考程度に留めてください.

…Webインターフェイスからの自動更新を使った場合は同意しなくてもダウンロードできそうなので,一旦新しいファームウェアをダウンロードさせて,Linuxを動かして読み出せば……って,これはグレーゾーンでしょうか.

ツール

PFS.IMGを書き換えたり,zipで固めたPFS.IMGをファームウェアに埋め込むツールを置いておきます.あまりデバッグしてないので危険なソフトですので,注意してください.pfsedit.zipもルータに入れようとしたら,サイズが大きすぎたのかルータがエラー吐きました(汗).ファームウェアからzipファイルを抜き出したり,PFS.IMGからファイルを取り出すことも出来ます.

Download: pfsedit.zip

覚え書き

SOHO.BIN

こちらも,少し解析すれば改造できると思います.

メモが残っていて名前が付けられている関数だけですが,大体どの辺りに何の関数があるかの一覧です.ほんの極一部ですが,ファームウェアの一部を書き換えて,試しに関数を呼んだりしても面白いかも知れません.

80001000 EntryPoint
800015D0 get_pc()
800015DC find_file(a0:path)?

80004254 sprintf(s,format,...)?

8000477c sio_printf(format,...)
80005424 toupper?
80005440 toupper(a0)
8000545C tolower(a0)
80005478 strcpy()
800054D4 nstrcpy(a0,a1,a2)
8000555C strlen(a0)
80005594 strchr(a1,a0)
800057D0 strcmp(a0,a1)
80005B58 strcmp2(a0,a1)
80005C54 strcat(a0,a1)
800066B8 sio_putchar()
80006700 sio_inputchar()
80006724 sio_chekinput()
80006740 sio_chekinput2()
80009194 main()
80032c3c initialize_data_area()!
80034538 SaveConfig()
800512d4 SHA1_Update(sha,dat,size)??
80066804 GetCGIAddr(a0,a1)
80068054 GetPath()
800688DC GetFileInfo(a0,a1)

80074784 FindFlash()
80074D8C EraseFlash()
800754E4 WriteFlash()
80075908 OverWriteFlash(1,dst,size)

800A07E0 login.exe(a0,a1,a3=soc?)
800C59E4 wan_network.exe

800d6f60 fprintf(f,format,...)

不思議なものでニーモニックをジーっと眺めていると,Cの関数名が見えてきます(人間としてどうかと思いますが…).

フラッシュメモリ

フラッシュメモリは0x1fc00000あたりにあるみたいです.

シリアルポート

シリアルポートは0xb2600000辺りのアドレスに割り当てられてます.

bank 3からプログラムを読み込んだ後のABCDEF…という文字列は,SOHO.BINの先頭で一文字ずつ出力しています.このあたりを見ながら書けば,Hello worldくらいのプログラムはすぐに書けるでしょう(^^;.

ちょっと文字を入出力するプログラムを書いて遊んでみましたが,それ以上のことはやってません.

AM5120

ADM5120のメモリマップが書いてある文書がネット上に見当たらないのですが,探し方が悪いのかな….どうも,USBのホストコントローラまで内臓してそうなんですが….どうなんでしょう.

(追記)…データシートが公開されているようです.ADM5120で動くLinuxのソースもあります.これでもう解析しなくて済みます.

静かに動くWebサーバ

BBR-4MG

ファームウェアをちょっといじってWebサーバにしてみました.login画面を入れ替えただけで,プログラム領域は書き換えていません(^^;.

半田ごて使って簡単な回路が組めて,バイナリエディタが使える人ならそんなに難しくないと思いますが,くれぐれも気をつけてやってください.難しいと思ったら,やらないで下さい.

この文書の履歴

Copyright © 瓶詰堂 all rights reserved.