問題タブ [disassembly]
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.
gcc - COMPILATION 中に解析ツリー、中間コード、最適化コード、およびアセンブリ コードを表示するにはどうすればよいですか?
私はコンパイラコースを勉強しています。プログラムのコンパイルは以下の手順に従います
- 字句解析
- 構文解析
- セマンティック分析
- 中間コード生成
- コードの最適化
- ターゲット コード生成。
各ステップの出力を確認するにはどうすればよいですか。たとえば、構文解析後に解析ツリーを確認したいです。
LinuxマシンでGCCコンパイラを使用してプログラムをコンパイルしています。
gcc で -Wa コンパイラ オプションを使用すると、プログラムのアセンブリ コードを表示できます。同様に、トークン、解析ツリー、および Inetmediate コードを表示するオプションがあります。
assembly - このアセンブリ言語コードについて教えていただけますか?
「改善」しようとしている PC ゲームのコードを調べてきました。(わかりましたので、ゲームが苦手かもしれませんが、それでもプレイしたいです)。次のコードを調べてください。
このコードは、レベル カウントダウン タイマーに対して毎秒呼び出されます。数分間、特定のレベルにとどまる必要があります。アドレス [ebp+00007B1C] にプッシュされる値が 0 になるように上記のコードを変更できれば、ゲーム レベルは常にタイムアウトになり、クレイジーな「サバイバル」ミニゲームをプレイする必要がなくなります。
このコードから私が理解したことを説明します。心配しないでください。これに深く入る必要はありません。最初の行で
、タイマー値を取得します。たとえば、残り 97 秒の場合、この値がロードされるのはここです。2 行目で
は、値 (1 秒) が 97 から減算されます。3 行目では
、96 が再びメモリに移動されます。最後に、残り時間に基づいて他の処理を行う関数呼び出しがあります。
あとは、プッシュされる値が 0 になるように、このコードになんらかのパッチを適用するだけです (3 番目のステップ)。
これで私を助けてもらえますか?
c# - 最も単純なコードハッキング
私は次のコードを持っています:
以下の手順で「TheCorrectSerialNumber」を見つけるのに役立つ逆コンパイルまたは逆アセンブルツールが必要です。したがって、手順は次のとおりです。
- 私のコードの実行可能ファイルを逆コンパイルまたは逆アセンブラします
- exeを実行し、正しいシリアルではなく「AAA」のようなものを入力します</ li>
- 比較されている文字列を含む私の「AAA」を見つけ、最後に「TheCorrectSerialNumber」を見つけます。
提案されたツールが上記の手順をどのように実行しているかについても説明してください。
どうもありがとう!!!
注:誰かのコードを解読したいと思う傾向がある人のために!まず、この質問の直前と直後に私が尋ねた質問を見てください。私はプログラマーであり、コードのセキュリティについて心配する必要があります。したがって、私は自分のコードを解読し、他のコードでいくつかの演習を行うことにしました(解読を教えるサイトには、解読されるように設計されたソフトがたくさんあります)。安全なコードを提供する方法を理解します。人々がどのようにクラッキングを行うかを知っていれば、おそらく知らない人よりも安全なコードを作成するでしょう。そして、あなたがクラックする方法を研究するためにあなたが試みなければならないなら。それが私のポイントです!
disassembly - .Net Reflector 赤と緑の四角
緑と赤の四角は何?これらの変数名と文字列は意図的に難読化されていますか? 「難読化解除ツール」はありますか?
.net - Reflector のような逆アセンブラーを使用して、メンバー変数のハードコードされた値を確認することは可能ですか?
以下のサンプル ソース コードから、誰かが_secret
逆アセンブラを使用する価値を理解できるでしょうか? Reflector を介して値を取得する方法はわかりませんでしたが、あまり使用していません。コードが難読化されていないと仮定します。
ありがとう!
assembly - 初心者の逆アセンブリクエリが作成されます
私は逆アセンブルに比較的慣れていますが(読む:愚かな初心者)、このビットは私を困惑させました:私はzlibで圧縮されたセーブファイルのセットとそれらをロードするゲームを持っています。それらの構造は既知であり、ロードされると、メモリ内の構造体は対応する保存ファイルと同一になります。問題は、ゲームがどうにかして静的ポインターを残さない、スクリプト専用ではない言語で書かれていることです。まったく。数十人が試しましたが、同じマシンでマイナーな変更を加えると、一見静的なポインター パスが壊れてしまいました。簡単な解決策は、プロセスのメモリでファイルの内容を検索することですが、これは非常に力ずくの解決策であり、教育目的では避けたいと思います。
質問:
- OllyDBG を使用しようとしています。私はそれが苦手ですが、実際に機能する簡単なコードケーブを作成することができました。仕事に適したツールを使用していますか、それとも愚かな初心者ですか? 最新のリバーサーのキットにはどのようなツールが含まれていますか?
- 関連するメモとして、メモリ検索にチート エンジン (またはそのいとこである MHS) を使用する必要があります。これは少し直感に反するようです。OllyDBG は、値を検索して結果を絞り込む方法を本当に提供していませんか、それとも何か不足していますか?
- WINAPI にブレークポイントを設定するにはどうすればよいですか? 一体、WINAPI はアセンブリ レベルでどのように見えるのでしょうか? これは私がまともな情報を見つけることができなかったものであり、Googleには十分すぎるほどの情報があると確信していますが、正しい言葉を入力できないようです.
- 上記を拡張すると、動的ブレークポイントをどのように設定しますか? 頻繁に呼び出される特定の関数に興味があるが、その時点での EAX が特定の値に等しい場合にのみ、その条件で Olly (または他の何か) を中断するにはどうすればよいでしょうか?
- 逆アセンブルに関する一般的な本/提案/リソース、または物事を壊すことを目的とした低レベルのプログラミング。
免責事項: 問題のゲームはフリーウェアであり、シングル プレイヤーであり、作成者はこれを否定しません。何よりも機能を拡張することを目的としたプロジェクトです。また、最初の投稿ですが、あまり手探りしていないことを願っています。:(
c++ - どのシナリオで、デバッグ中に逆アセンブリ言語を使用すると便利です
次の基本的な質問があります:
デバッグに逆アセンブルを含める必要がある場合
分解の解釈方法、たとえば以下では、各セグメントは何を表していますか
言語:C ++
プラットフォーム:Windows
.net - .net 実行可能ファイルの部分的な逆アセンブル
.net 実行可能ファイルを解析し、外部メソッドへの呼び出しのリストを生成する比較的小さなプログラムを作成する必要があります。たとえばSystem.Console.WriteLine
、ファイル内で が呼び出された場合、ツールはSystem.Console.WriteLine
どこかで呼び出されたものを出力する必要があります。実際の逆アセンブルを実装することはできません (頭脳と時間が限られている) 必要もありません (必要なのは呼び出しのリストだけです)。呼び出された関数の名前と呼び出しが発生したオフセットを書き込む、grep フレンドリーで perl フレンドリーな比較的短いソリューションが必要です 。
私がすでに試したこと:
MSDN から仕様をダウンロードします。
0x28
これで、静的呼び出しがバイトコードに変換されることがわかりました。:) その後にメソッド記述子が続きますが、メソッド記述子が何を意味するのかを理解するには、おそらく仕様全体を読む必要があります。Reflector で単純な exe を開きます。Reflector は元のアプリケーションのコードを正確に再現しましたが、呼び出しのバイトコードを確認できません。
限られた時間と知識で、必要な限られた機能を実装することは可能ですか?
もしそうなら、私はそれを実装するために何を知っていますか? 「ダミー用の CIL アセンブリ」ガイドはありますか?
assembly - gdbを使用した逆アセンブルされたライブラリのデバッグ
LinuxおよびMacOSXIでは、stepiおよびnextiを使用して、情報をデバッグせずにアプリケーションをデバッグできます。
Mac OS Xでは、gdbはライブラリ内で呼び出される関数を表示しますが、各stepi命令でいくつかのアセンブラ命令を進める場合があります。
Linuxでは、ダイナミックライブラリにステップインするとgdbが失われます。たとえば、puts()では、puts()内に3つのアセンブラ命令があり、gdbが0x080482bfでジャンプに達すると、「関数に選択されたフレームのプログラムカウンタが含まれていません」というメッセージが表示されて失敗します。
gdbを使用してこれらのライブラリ呼び出しをデバッグする方法を知っていますか。
foxpro - VisualFoxProのEXEファイルが分解されないようにする方法
私はrefoxを試してみて、私のEXEがどれほど簡単に分解されるかを確認しました。refoxは、誰も分解できないことを保証する機能を提供します。しかし、他に選択肢はありますか?