musl libc改造にっき

これは過去の話なんですけどね

AndroidってLinuxLinux言いますけど魔改造されててPOSIX準拠じゃないんですよ
例えばpmコマンドって知ってます? パッケージインスコするのに使うアレ。
今Nexus 5Xで調べたら /system/bin/pm にあるんですよ
でもUbuntuには/systemなんてないんですわ
なのでAndroidを極めると"普通の"(POSIX準拠の)LinuxとAndroidで違う場所にあったりそもそも無かったりなんて事があってしまう訳で

今回も他人事とはいえ起こっちゃったんですね
/etc/resolv.conf がねぇぞどこいったと大騒ぎになったんですね。phpからネットにつなぐために

じゃあ指定出来るようにしてしまおう、と。
いや指定できたら脆弱性突けるだろ というお話になりそうですか仕方ないね。突かれて死んで頂こう
だけどこれってphpの管轄じゃないんですわ
その下に居座るlibcっていう奴がハードコーディングしてくれてるわけ
嗚呼、libc触らなアカンのか

今回そのphpはmuslを使ってstatic linkされておりました。archは参考までにaarch64でした
で、muslを改造する訳ですが、沢山あるファイルの中からresolv.confをハードコーディングしているしている部分をすぐ見つけるのは大変なので、GitHubにImportしてから検索掛けたんですな


なんと/src/network/resolvconf.cだけ触れば要件は満たせちゃうんですな。しかもやってることは超単純。

チャチャっと弄って、終わり!


でもコンパイラ無いと意味がないんですな
まぁmusl-cross-makeなんていう便利なツールキットがあったものだ
これに適当にパッチをブチ込めば改造musl搭載コンパイラ作れちゃうんですな
makeすると数十分掛かるので暇つぶしの方法ぐらい探しておこうね

あとは適当にphpをコンパイルして喚いてる何かにぶん投げて終わり

コメント

このブログの人気の投稿

最短出札補充券を買う 理論編

最短出札補充券を買う 実践編 その1

モイ株式会社 2019年新卒採用 FizzBuzzチャレンジ