私はMetasploitでペイロードを生成していましたが、さまざまなテンプレートとペイロードを持つことができるテンプレートのいずれかを実験していました。exe-small
です。私が生成しているペイロードのタイプはwindows/meterpreter/reverse_tcpであり、通常のexe
テンプレートを使用すると、ファイルサイズは約72KBですが、exe-small
は2.4kbのペイロードを出力します。どうしてこれなの?そして私はこれをプログラミングにどのように適用できますか?実行ファイルはどのようにファイルサイズが小さくてもかまいませんか?
答えて
最小可能なPEファイルは97バイトで、何もしません(ただ返します)。
今日実行可能な最小実行可能ファイルは、Windowsにはkernel32
がロードされているため、133バイトです。インポートのないPEファイルを実行することはできません。
このサイズでは、インポートテーブルにUNCパスを指定して、インターネットからペイロードをダウンロードできます。このような小さな実行可能ファイルを達成するために
、あなたは
- にDOSを削除し、デフォルト
- 1024でファイルの配置を減らす主にCランタイム
- を取り除くために、アセンブラで実装していますこのプログラムはDOSモードでは実行できません "
- 一部のPE部分をMZヘッダーにマージします
- データディレクトリを削除します
詳しい説明は、大型研究blog post called TinyPEでご覧になれます。
実際にはプログラム/ exeの機能に重大な影響を与えないコードスパムと呼ばれるものを除いて、実行可能ファイルを大きくする必要はほとんどありません。これは他のファイルに対しても有効です。 FrontPageで書かれたものと比較して手作業で書かれたHTMLページを見てください。スパムコードです
私は、すべてのKBサイズで、OSで実際に必要なタスクを実行していた古いDOSファイルを覚えています。私の.exes(実際には.com)の1つは20バイトしかありませんでした。
WindowsのOSに含まれているファイルの大部分を削除することができますが、OSは完全に機能する場合もありますが、これは.exeファイルと同じです。コードは無用であるか、または目的に関連する目的とは異なるか、または意図的に追加されます(下記参照)。
この異常のピークは、ファイルを数十MBにすることができる高度なコピープロテクションを使用するゲームの.exeファイルに現在追加されているコードです。ゲームを実行するために必要な実際のコードは実際には完全なコードの10%以下です。
例のように72 KBのファイルサイズは、Windows OSに実質的に何かをするのにはかなり十分です。
非常に小さい.exesのように、これをプログラミングに適用するには、物事を単純にしてください。見た目だけで不要なコードを追加したり、ある時点でプログラム/コードのその部分を使用することを考えて、コードを追加しないでください。
このEXEの場合は、通常、ほとんどのスペースがアイコンに使用されます。通常、アイコンにはさまざまなサイズと色のスキームが含まれていますが、「古くて錆びた」アイコンやアイコンがない場合は削除できます。
EXEに署名すると、4kのスペースが使用されます。
小さなEXEの例として、never10をgrcで表示します。最後の段落で
https://www.grc.com/never10/details.htm
:上記の点を強調して詳細ページがあります
最後の注意:私は「Never10」はそれと同じ大きさであることを少しイライラしてい 85キロバイトです。デジタル署名はアプリケーションのサイズを 4k増加させますが、今Microsoftの が必要とする高解像度とハイカラーのアイコンは56k必要です!だから、すべてのその迷惑なオーバーヘッドなしで、アプリ は、25kに匹敵するだろう。もちろん、私は アセンブリ言語で書いています。
免責事項:私はgrcと提携していません。
- 1. JARファイルはもう実行されていません
- 2. アンドロイドスタジオのGoogle Playサービスがなくてもアプリが実行されませんか?
- 3. quote_keysでjavascriptを小さくしてもうまくいきません。
- 4. Raspbianのデスクトップから実行ファイルを実行しようとするとうまくいきません
- 5. struts.xmlはうまく実行されませんか?
- 6. .JAR実行可能ファイルが正しく実行されていません
- 7. IIS実行ファイルが実行されていません
- 8. jQuery ajax $は定義されていませんが、とにかく正しく実行されますか?
- 9. Railsサーバーが実行されていません。そのようなファイルやディレクトリはありません@ dir_s_mkdir
- 10. 作成されたILコードには、いくつかの行がありません。ライン間でどのようなタスクが実行されますか?
- 11. 履歴の半分を削除してもSSISDBのファイルサイズは縮小されません。なぜですか?
- 12. アンドロイド用のスカラーアプリケーションは、どのようにファイルサイズを縮小できますか?
- 13. Pyinstallerで生成された実行ファイルのファイルサイズを小さくする一般的なヒントは何ですか
- 14. pyinstallerの実行可能ファイルサイズを小さくする
- 15. ファイルが実行ファイルである場合にのみnode.jsにいくつかのコードを実行させるにはどうすればよいですか?
- 16. スレッドスリープの前にコードが実行されていませんか?
- 17. Node.js:ポストリクエストw/pngのコンテンツ長のヘッダー値が実際のファイルサイズよりも小さいのはなぜですか?
- 18. PATHとCLASSPATHが設定されているにもかかわらずjarファイルを実行できません
- 19. クエリは実行されていますが、何も表示されません
- 20. アプリがバックグラウンドで実行されていなくてもiOSアプリでコードを実行させるにはどうすればよいですか?
- 21. 氏名に実名の接頭辞が付いていてもなくてもかまいません。
- 22. なぜこの行は実行されていませんか?
- 23. Git LFSは小さなファイルをうまく扱いますか?
- 24. 私のアンドロイドプロジェクトを実行しようとするといくつかのファイルが見つかりません
- 25. メインスレッドでは何が実行されていませんか?
- 26. C++実行ファイルはコマンドラインから実行されますが、eclipseでは実行されません。
- 27. javascriptファイルがロードされておらず、stringByEvaluatingJavaScriptFromStringも実行されていませんか?
- 28. Javaでは、スレッドが実行されているかどうかをどのように判断しますか?
- 29. ViewPort3D xamlのファイルサイズを小さくするにはどうすればよいですか?
- 30. カメラで撮影したスナップショットのファイルサイズを小さくするにはどうすればよいですか?
私は同意しません。私の最初の返信を読んでください。 MS-DOS時代に使用していた20バイトの有効な.comファイルがあります。 – Overmind
@Overmind:COMファイルはPEファイルではないので、矛盾はありません。そのファイルは現在Windows(7以降)でも実行されていますか? COMファイルにはヘッダーもメタデータもありません。また、この質問はMetasploitのコンテキストでSecurity.SEから移行されました。ここでは、悪質なペイロードをダウンロードしたいと思っていましたが、20バイトのCOMファイル。 –
これは16ビットの実行ファイルなので、64ビットでは実行されません。 – Overmind