メインコンテンツへスキップ

デバッグ不可能なアプリを徹底解析!

·1 分
2025/02 デバッグ アプリ開発 プログラミング トラブルシューティング ソフトウェアエンジニアリング

デバッグ不可能なアプリを徹底解析!

引用元:https://news.ycombinator.com/item?id=43081713

amjoshuamichael 2025-02-17T19:41:12

Bryce Bostwickはデバッグやリバースエンジニアリングのすごくクールでインスパイアリングな仕事をしてるよ。YouTubeで見つけたんだけど、TikTokを猫動画だけ表示するように改造する動画に感動して、Instagramもメッセージ機能だけ残すように改造したいと思ってるんだ。特にWindhawk風のWindowsのモデリングにもっと関わりたい。BryceのiOSでのやり方を生配信で学べるのは最高だよ。

xmprt 2025-02-18T04:56:35

Androidに関して同じようなことをしている人を知っている人いたら、もっと知りたいな。Revancedを使ったことがあるけど、始め方についての良いガイドがないんだ。

Oxodao 2025-02-18T07:50:10

そんなYouTuberを探してるけど、始めるにはjadx-guiとapktoolを合わせるのがいいかも。apkを分解したりパッチを当てたり再構成したり、最後にuber-apk-signerで署名するのがメインだよ。古いアプリをいじるとき、mitmproxyでAPI呼び出しを見たりするのも楽しい。Fridaやxposedも役立つツールだよ。リバースエンジニアリングは初心者だけど、すごく興味深い!

jcul 2025-02-18T11:06:23

以前はAndroidのリバースエンジニアリングをけっこう行ってたよ。アプリを取得して分解・逆アセンブルして、必要な部分を見つけてsmaliをパッチして再コンパイルするのは簡単だった。apktoolやsmali/baksmaliを使ってた記憶がある。dex2jarも使って、Javaのデコンパイラで扱うjarを得たりしてた。多くのAndroidアプリは難読化してるけど、smaliにログを追加するなどできると思う。情報は古いかもだけど。

iggldiggl 2025-02-19T16:28:08

“dex2jarみたいなものを使ってjarを得ることができた”というの、今ならjadxがすごく便利。インタラクティブに変数やメソッド、クラスの名前を変更できるし、デコンパイルされたコードを読みやすくできる。ただ、デコンパイラには限界があるけどね。

darkhorse222 2025-02-18T08:48:09

あなたが言ったことを試してみるつもり。でも、手順をメモしてくれると嬉しいな。友達と写真を投稿したりチャットしたりするのにリールに晒されるのが嫌なんだ。

userbinator 2025-02-17T22:03:48

anti-debuggingやanti-anti-anti-debuggingのテクニックは、DOS/Windowsでは昔から普通だったね。ユーザーがアプリの挙動を制御できるかどうかは、プラットフォームがどれだけユーザーフレンドリーかに反比例する気がする。PT_DENY_ATTACHはそのために作られたように見えるけど、Windowsはそういう機能がないから、自分にアタッチさせるトリックが使われることが多いんだ。

sjtgraham 2025-02-17T23:41:21

>PT_DENY_ATTACHはその目的のためにAppleが発明したものだよ。昔のiTunesのDRM戦略の一環なんだよね。

lilyball 2025-02-18T03:42:22

AppleのApp Storeが直接のsyscallをするアプリを拒否しないのに驚きだよ。Appleのプラットフォームではsyscallは安定したABIじゃないから、全てをlibSystem経由にしないといけないんだ。ここで著者が’mov w16, #26’を探した理由が気になる。

MintPaw 2025-02-18T05:08:46

‘svc 0x80’は任意のsyscallを実行する命令で、どのsyscallが実行されるかはx16レジスタに基づいてるんだ。おそらく、アプリが無関係なsyscallを大量に行っているから、それを監視するのは役に立たなかったんじゃないか。そういうことを動画で言ってたね。

lilyball 2025-02-18T18:45:50

このアプリは直接的にsyscallをしないのが大事で、syscallはlibSystemを介して行われるから、svc命令はバイナリ内には含まれないはずだよ。

kmfpl 2025-02-18T16:12:32

コンパイラはsyscallラッパーをインライン化することがあるから、静的にチェックするのは簡単じゃないんだ。SVC命令を検索しても大量の結果が出るよね。X16に移動される正確なsyscall IDを探せばすぐに見つかるんじゃない?

lilyball 2025-02-18T18:48:43

Appleプラットフォームのsyscallへの安定したインターフェースはlibSystemで、これはダイナミックライブラリなんだ。コンパイラは安定したABIを作るためにAppleプラットフォームではsyscallをインライン化できないし、リンク時にlibSystem自体も見えないんだ。

eddd-ddde 2025-02-18T17:42:18

安定しないABIをインライン化するのはどうやって安全にできるの?

brycebostwick 2025-02-17T21:13:34

こんにちは!著者だよ、質問があれば答えるよ!xmprtさん、シェアありがとう!

StefanBatory 2025-02-17T21:55:30

あなたのYoutube動画見たけど面白かった!でも、文章版も提供してくれて感謝してるよ、すごくいいね!

gloosx 2025-02-18T07:30:11

とても面白い記事だった!低レベルの逆アセンブルを理解するには、こういう読み物がずっと欲しかった。著者に質問:GuardSquareって有名な商用ツールは、こういう簡単な逆アセンブルを防ぐ何か新しいものを持ってると思う?TopWidgetsは何かしらの保護があったの?それともローカルの努力だった?

brycebostwick 2025-02-17T21:18:34

(これらのコメントはあまりにも優しすぎるね。みんなありがとう!)

xmprt 2025-02-18T04:59:17

あなたの動画はすごく面白いと思う!もっと多くの人がチェックしてないのが驚きだよ。私はAndroidを使ってるから動画の内容は直接は関係ないけど、iOSの低レベルデバッグを学ぶのはすごく価値があるよ。

barco 2025-02-17T22:28:42

iOSってシステムコールのエントリーをフックして戻り値を変更したり、SVCがどこで呼ばれたかを検出するためのPTRACE_SYSCALLみたいなものがあるの?

もっとコメントを表示(1)
sjtgraham 2025-02-17T23:51:44

いや、Fridaを使うといいよ(インラインシステムコールをハンドラーへのJMPに置き換える)。でも、アプリがランタイム中に自分の整合性を検証するって場合、すぐに複雑になるから、ハードウェアブレークポイントが役立つ。でも、開発者がアプリ全体にインライン化しちゃうと、すぐにハードウェアブレークポイントが足りなくなるね。

bobmcnamara 2025-02-17T22:44:43

AppleはiPhone4のページクロスコア故障からずいぶん進化したね。

smw 2025-02-17T22:08:45

古いスマホ使って脱獄してるの?それとも新しい脱獄方法ある?

brycebostwick 2025-02-17T22:13:07

俺は主に古いスマホを使って16.6のまま。iOS 17/18は難しいよ。でも7世代のiPadなら脱獄できる(技術的にはiPadOSだけど)。iPadも持ってるけど、iPhoneの方が持ち運びしやすいから好き!あと、あのデバイスがiPadOS 19をサポートしないって噂も見たから、もしそれが本当ならどうするか不明だな。Corelliumにお金払うことになるかも。

cwillu 2025-02-17T22:00:04

テキストに自動再生のGIFが混ざっててページを閉じた。

brycebostwick 2025-02-17T22:09:09

俺はデフォルトで好きだけど、他の人はそうじゃないかもね。場合によっては’prefers-reduced-motion’が有効ならデフォルトで再生を止めるのもありかな。でも、ここにいる他の人たちもその設定を有効にしてるのか気になるな。css専門家じゃないけど、iOSの’UIAccessibility.isReduceMotionEnabled’と同じようなのがウェブにあるか確認してて、いいよね。

cwillu 2025-02-17T22:23:29

その設定は俺のOSにはないし、意味もなくユーザー体験を悪化させるような設定は支持できないね。あなたのサイトだし、自分がやりたいようにすればいいけど、俺のブラウザでは不快なタブは厳しく閉じるから。

kmfpl 2025-02-18T16:08:02

君も大きな棒を抜いたの?

cwillu 2025-02-19T00:07:25

読んでる時に動きがめちゃ気 distractingする障害だってこと?

ThePowerOfFuet 2025-02-22T17:21:04

自動再生を無効にして。

jer0me 2025-02-17T19:49:03

動画は最高に良かった!テンポも良くて必要な知識があればサクサク理解できるし、デモもオシャレで流れを壊さないんだよね。

bluelightning2k 2025-02-17T20:30:43

興味深い内容だね。アプリが不当に過敏だったのか、それとも最初からマルウェアとして疑われてたのか気になるところ。こんなに手間かける理由があるのかな。

brycebostwick 2025-02-17T21:17:59

ただの過敏すぎるアプリっぽいね。特にウィジェットを保護しようとしてるっぽいけど、情報はもう漏れちゃってるし。バイナリにも面白いものがあって、ある時はWindowsの.isoをダウンロードするコードが見えたことがあったのはびっくり!それはネット速度テストウィジェット用だったんだけど。

beefnugs 2025-02-17T22:54:46

もしApp Storeを運営してたら、他のアプリも調査する理由になるくらいの証拠だと思うし、すべてのアプリ提出に無限ループ検出を追加するかもしれないな。

MintPaw 2025-02-18T05:25:17

無限ループは色々なアルゴリズムやパターンで使われるからなぁ。無限かどうかなんて、停止問題のせいで分からないし。

schmidtleonard 2025-02-17T21:34:14

BillGates.iso: 自分の目的は?
CoolWidgets.app: あなたの役割はネットワーク速度をテストすることだ。
BillGates.iso: なんてこった。

bluelightning2k 2025-02-17T20:31:47

著作権侵害を証明しようとしている可能性もあるね。アプリがロゴとかを変えられて再コンパイルされたら、そうなるかも。

Retr0id 2025-02-18T14:38:17

>”PT_DENY_ATTACHをバイパスするのは難しい”
もっとハードなモードもあるよ。macOSでやったことあるけど、カーネルをパッチあててPT_DENY_ATTACHを無効にするのも簡単だった。ただ、iOSだともっと手間がかかりそうだね。XNUはオープンソースだけど、パッチ当てるのは再コンパイルより16進エディタの方が楽だった。

sjtgraham 2025-02-19T01:36:48

カーネルタスクポートを使ってproc構造体のビットを反転させることもできるし、署名なしのコードページやRWXを許可してJIT化を有効にすることもできるよ。

jillyboel 2025-02-18T14:23:43

>”脱獄してるときにそれを実行すると、電話全体がクラッシュするよ”
アプリをマルウェアとして報告するの?電話がクラッシュするのは明らかにマルウェアの挙動だけど、他にも隠したい悪意のある行動があるのかな。こういうのを防ぐのがAppleのウォールドガーデンの目的じゃなかったの?

もっとコメントを表示(2)
loumf 2025-02-19T00:20:44

’Jailbreak’がある場合は、壁の内側にいないってことだね。Appleは、jailbrokenのiPhoneがクラッシュするアプリには問題ないと思うよ。

jillyboel 2025-02-19T12:53:05

この記事にも書いてあるけど、クラッシュは普通のiPhoneでも再起動させるからね。このマルウェア開発者は、そういう状態にはトリガーを起こさなかっただけだよ。まあ、それとは別の話さ。電話がjailbrokenだからって、Appleのストア全体のことを語るわけじゃないし、明らかにマルウェアが配布されているのを許可している。

lilyball 2025-02-18T03:39:06

’com.apple.tw.twrr’って通知についてめっちゃ興味ある。なんで’com.apple’で始まってるん?ここで話題になってるアプリ(Top Widgetsみたい)ってAppleのアプリじゃないじゃん。

Bogdanp 2025-02-18T05:53:47

通知名は適当な文字列だよ。衝突を避けるために、こういう完全修飾名を使うのが普通なんだ。開発者がこういうプレフィックスを選んだだけだと思う。

pilif 2025-02-18T15:02:35

逆DNS表記の本来の目的は、衝突しない名前空間を持つことなんだよ。他の誰かの名前空間を使うのは、将来的にトラブルを招くことになりかねない。多分、誰かが通知をチェックする時にAppleって見て無視するようにするための仕込みだと思う。

apricot 2025-02-18T00:36:55

ツールは違うけど、これって80年代のApple IIのコピー防止をブートトレーシングで突破してたのと似てるね。変わらないことはあるんだ。

zlagen 2025-02-17T20:49:49

ウェブサイトのJavaScriptコードを逆アセンブルしてる人について知ってる?

masto 2025-02-17T20:59:16

この著者が最近出したこれ見た?
https://youtu.be/F5m2JxplnXk

zlagen 2025-02-17T21:00:30

すごいね!

zemnmez 2025-02-17T20:54:14

僕のいくつかの書き込みも、こんなことをやる方法を語ってるよ:
appleid
https://zemnmez.medium.com/how-to-hack-apple-id-f3cc9b483a41

steam
https://hackerone.com/reports/409850

cynicalsecurity 2025-02-17T20:06:10

Appleが特定の条件下でわざと電話をクラッシュさせるアプリを許可したのは不思議だよね。

jer0me 2025-02-17T20:23:08

多分、レビュー中はクラッシュしなかったんじゃないか。App Storeのレビューは人間がアプリの一般的なフローをタップして特定のことを探してるだけだし。ソースコードは提供しないし、バイナリをしっかり見ないから、プライベートAPIを使ったり、レビュアーから隠したりするのは難しくないよ。例えば、制裁でApp Storeから追い出されたロシアの銀行は、ロシア国内で異なるアプリを表示する“トロイの木馬アプリ”を使ったことがあるし。

Hamuko 2025-02-17T20:29:22

特定の条件ってのは、iOSの脆弱性を利用してサードパーティのコードで電話のOSを改造する必要があるってこと。Appleはそれを見逃したと思う。

cyberax 2025-02-17T22:46:35

アプリのレビューは平均で1分もかからないんだ。レビューアーがサインインして、適当にタップするだけで終わっちゃう。

duxup 2025-02-17T21:17:24

Appleはそんな条件はテストしてないと思う、あまり一般的じゃないし。

GrumpyCat42 2025-02-17T20:56:51

最近、著者のYouTubeコンテンツを楽しんでるんだ。ただし、リバースエンジニアリングの経験はあまりないんだけど。

krackers 2025-02-18T05:21:16

脱獄したiPhoneでカスタムkextを実行できるの?もっとクールなのはカーネル自体を修正することだよ。

soraminazuki 2025-02-18T00:44:35

>“脱獄した状態で実行すると、電話全体がクラッシュする!”デバイス所有者に対する厳しい反ハッキング法は、企業のマルウェア製造者には適用されないのは不公平だな。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。