私は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. quote_keysでjavascriptを小さくしてもうまくいきません。
- 3. .JAR実行可能ファイルが正しく実行されていません
- 4. Raspbianのデスクトップから実行ファイルを実行しようとするとうまくいきません
- 5. struts.xmlはうまく実行されませんか?
- 6. IIS実行ファイルが実行されていません
- 7. Railsサーバーが実行されていません。そのようなファイルやディレクトリはありません@ dir_s_mkdir
- 8. jQuery ajax $は定義されていませんが、とにかく正しく実行されますか?
- 9. 作成されたILコードには、いくつかの行がありません。ライン間でどのようなタスクが実行されますか?
- 10. アンドロイド用のスカラーアプリケーションは、どのようにファイルサイズを縮小できますか?
- 11. Pyinstallerで生成された実行ファイルのファイルサイズを小さくする一般的なヒントは何ですか
- 12. ファイルが実行ファイルである場合にのみnode.jsにいくつかのコードを実行させるにはどうすればよいですか?
- 13. スレッドスリープの前にコードが実行されていませんか?
- 14. クエリは実行されていますが、何も表示されません
- 15. PATHとCLASSPATHが設定されているにもかかわらずjarファイルを実行できません
- 16. Node.js:ポストリクエストw/pngのコンテンツ長のヘッダー値が実際のファイルサイズよりも小さいのはなぜですか?
- 17. アプリがバックグラウンドで実行されていなくてもiOSアプリでコードを実行させるにはどうすればよいですか?
- 18. 氏名に実名の接頭辞が付いていてもなくてもかまいません。
- 19. なぜこの行は実行されていませんか?
- 20. 私のアンドロイドプロジェクトを実行しようとするといくつかのファイルが見つかりません
- 21. jarファイルが実行されません
- 22. mem_test.batファイルが実行されません
- 23. Git LFSは小さなファイルをうまく扱いますか?
- 24. 別のMacでappファイルが実行されていません
- 25. AptanaはPythonモジュールを実行させません。どうして?
- 26. Androidのカウントダウンタイマーが正しく実行されていません
- 27. JavaScriptアニメーションが順番に実行されていませんか?
- 28. Windows Phone 7の単体テストは何も実行されていませんか?
- 29. カメラで撮影したスナップショットのファイルサイズを小さくするにはどうすればよいですか?
- 30. ViewPort3D xamlのファイルサイズを小さくするにはどうすればよいですか?
私は同意しません。私の最初の返信を読んでください。 MS-DOS時代に使用していた20バイトの有効な.comファイルがあります。 – Overmind
@Overmind:COMファイルはPEファイルではないので、矛盾はありません。そのファイルは現在Windows(7以降)でも実行されていますか? COMファイルにはヘッダーもメタデータもありません。また、この質問はMetasploitのコンテキストでSecurity.SEから移行されました。ここでは、悪質なペイロードをダウンロードしたいと思っていましたが、20バイトのCOMファイル。 –
これは16ビットの実行ファイルなので、64ビットでは実行されません。 – Overmind