問題タブ [ida]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ のリバース エンジニアリング
今日、IDA Pro を使用して、ビジュアル C++ で記述された単純な「Hello world」プログラムを逆コンパイルすることにしました。
私の以前の知識では、実行可能エントリ ポイントで printf への即時呼び出しを見つけることはできないと確信していましたが、その通りでした。私が書いたのではなく、コンパイル プロセス中にコンパイラによって追加された多くのコードを見つけました。
コンパイル プロセス中にどのようなコードが追加されるかについて、理解を深めたいと思います。それは何をするためのものか?「メイン」をすばやく見つけて、逆アセンブルによって生成された不要なコードをすべてスキップする「トリック」はありますか?
私が見つけた最高のものは、http: //www.codeproject.com/Articles/4210/C-Reverse-Disassemblyの投稿で、Visual C++ を使用してコンパイルされた実行可能ファイルの実行順序は次のとおりであると述べています。
CrtlStartUp
主要
Crtlクリーンアップ
より詳細な回答をいただけますか?
ollydbg - 自己変更コードの逆アセンブル
私はただ疑問に思っていました-自己変更バイナリをどのように逆アセンブルしますか? olly や IDA は静的逆アセンブラーなので使用できないと思いますよね?命令の途中にジャンプすると、逆アセンブラはどうなりますか? そして、変成エンジンをどのように分析するのでしょうか?
patch - IDA Pro コマンドライン パッチ プログラム
IDA Pro (試用版) を使い始めたばかりです。IDA Pro を使用してバイナリ ARM ファイルを逆コンパイルしようとしています。まったく新しい関数をバイナリに追加することは可能ですか? また、既存の関数の名前を変更することは可能ですか?
新しく追加された機能を新しいエントリ ポイントとして作成し、古いエントリ ポイントの名前を別のものに変更することを検討していました。また、GUI ではなく CLI を使用したいと考えています。
ありがとう
assembly - Learning Assembly と IDA
少し組み立て/分解を学ぼうとしています。基本的な Hello World C EXE (簡単な追加機能付き) を作成し、無料版の IDA に投入しました。
何が起こっているのかがわかります。明確にするために...次は何をしますか?
3 つの DWORD 変数が表示されます。-0D8Hとは?-14H? -8? メモリアドレス?15 + 1を足すだけです。
申し訳ありませんが、IDAとアセンブリは初めてです。
ありがとうございました
delphi - IDA が静的にコンパイルされた関数を識別しない
私は現在、静的にコンパイルされているように見えるファイルをリバース エンジニアリングしていますが、IDA Pro は署名を検出していません! IDA によって認識されるべき関数をステップ実行するのに多くの時間を費やしているように感じますが、そうではありません。
とにかく、私は間違っているかもしれません...誰かアイデアはありますか?誰もこれに遭遇したことがありますか?
patch - IDA アセンブリのパッチ適用が「現在の場所から目的地に到達できません」で失敗する
私はIDA(およびリバースエンジニアリング)の初心者です。
edit->patch メニューで「patch->assembly」オプションを使用しようとしていますが、理解できないエラーで失敗します。
私の現在の行は "jnz short func" (func は loc_xxxx から名前を変更したラベルです) で、"jmp short func" に変更しようとしていますが、[OK] をクリックすると、次のメッセージが表示されたメッセージ ボックスが表示されます。現在地から目的地に到達できません。」
誰がそれが何を意味し、なぜそれが機能しないのか説明できますか? いろいろ調べてみたのですが、答えが見つかりません!
また、私が見つけた IDA チュートリアル (tut4you.com) の一部としてこれを行っていることも付け加えておく必要があります。
あなたの助けをありがとう、私は本当にそれで立ち往生しています!
ios - iOS バイナリを編集して再コンパイルすることはできますか?
私はアプリケーションを持っていて、最近 Cydia に投稿しました。他の誰かによってクラックされ、トレント サイトに投稿されました。内部にバイナリ チェックサム検証メカニズムがあり、バイナリに加えた変更に基づいて新しいチェックサム ファイルを作成することができました。彼らは 2 つの関数を編集して逆コンパイルし、torrent に投稿しました。
関数とクラスの実際の実装を見ることができることがわかりました。しかし、関数を編集するには、その関数のアドレスを見つけて、HEX EDITOR で編集する必要があります。私はそれを「ハッキング不可能」にしたくはありませんが、彼らがどのようにハッキングしたかを知りたいのです。
iOS バイナリの関数を編集して再コンパイルするにはどうすればよいですか? たとえば、クラスの 1 つに次のメソッドがあります。
この関数の戻り値を編集したい。それは可能ですか?
rebase - リベースとデバッグ
したがって、通常、IDAを使用してデバッグする場合、問題は発生しません。ただし、この1つの特定のプロセス(モジュールの前のサイズは9.9 MB)では、IDAは、プロセスを開始するたびにリベースすることを要求します。これにより、IDAがフリーズし、実際に開始する前に20〜30分待つ必要があります。
なぜこれを行うのですか、そしてどういうわけかこれを無効にすることができますか?私はこのような高度なデバッグに慣れていないので、リベースは私には少ししか意味がありません。
masm32 - 分解されたコードの読み取り
masm32で簡単なハローワードプログラムを書きました。しかし、IDAを使用して分解しようとすると、はるかに大きな出力が得られます(多くのスペースが必要になるため、そこには書き込みません)。そして、なぜそれが違うのかわかりません。分解されたコードを実行する方法は?
objective-c - ARMアセンブリで適切なセレクターを取得するにはどうすればよいですか
IDAを使用してiOSフレームワークのAddressBookを開くと、次のコードが表示されます。
_objc_msgSend()が呼び出される前に、どのセレクターがR1に格納されているかを知るにはどうすればよいですか。
インターネットの助けを借りて、私は次のことをします。
MOVW R1、#0x2B06およびMOVT.W R1、#0xBの後、R1=0x000B2B06を取得しました
ADD R1、PCの後、R1 = 0x000B2B06 + PC(A13A)+ 4 = 0x000BCC44を取得しました。ここで、A13AはADD R1、PCのアドレスです。
そのアドレスの近くのコンテンツは次のとおりです。
__objc_selrefs:000BCC44 DCD aInitasaddres_0; "initAsAddressBook:withAddressBook:withS" ... __objc_selrefs:000BCC48 DCD aDefaultstylepr; "defaultStyleProviderForStyle:" __objc_selrefs:000BCC4C DCD aInitwithnaviga; "initWithNavigationController:" __objc_selrefs:000BCC50 DCD aSetupinitialst; 「setupInitialStackAndLoadState:」
だから私はセレクター「initAsAddressBook:withAddressBook:withS ...」を手に入れました、
4.しかし、ワークフローをログに記録すると、「setupInitialStackAndLoadState:」が実際に呼び出されたことがわかりました。
セレクターを取得する方法に何か問題がありますか?