ちんぷんかんぷん
は 簡単な ‘Whats up, World!’ です。 x86 アセンブリで書かれたプログラムで、指示を再利用せず、ほとんど意味がありません。 現在、「Whats up, World!」を定義する 意味不明な
バージョンから分岐しています。 ソースおよびコンパイルされたバイナリで長引かずに文字列を適切に実行する前に、そのバイトを全体に散らばらせます。 この部門はさらに、その作成方法と、この技術の秘密を奨励するために実行を相殺するために費やす立場にある戦術を説明するのに余分な時間を費やしています. (定義文字列部門
このリポジトリは簡単な objdump
または逆アセンブル インストゥルメントの負荷を介してバイナリが読み取られないように、ベール プログラムを表示します。 仮に、name
および jmp
のすべての方向を単純に監視すると、推定可能な結果が得られる可能性があるため、この方法はもはや理想的ではありません。循環を使用して実行ジョグを再構築すると、このバイナリで動作している strings
からの情報を正直に探すことができますが、エンコードされた Whats up, World!
文字列。これは、これらを方向にエンコードする方法、または必要なペルソナを確保するために古い値をインクリメントおよびデクリメントする方法についてさまざまなヒントを費やしているためです.
私たちはさらに、頻繁にリバース エンジニアを混乱させるために、冗長なプログラムでどのように明白なアクションが実行される可能性があるかをベールで示します (たとえば、印刷デザインでは、eax
レジスタ).
SIGSEGV
gibberish.asm
(最低でも私のマシンでは) 約 50% の確率でセグメンテーション違反が発生します。これにより、魅力的なシーク情報が発生し、同じ古い Linux ドローでのプロセス実行の開始時にメモリがどのように配置されているかを調査することになります。 . gdb
では、メモリは一貫した方法で分配されているように見えるため、例外は発生しません。