2

アセンブリでシェルコードを書こうとしています。/usr/bin/killallコマンドとコマンドを実行する必要があります/usr/bin/wget。システムコールを使用して、シェルコードで両方のコマンドを完全に実行していexecve()ます。execve()しかし、これら2つを組み合わせたいのですが、最初の呼び出しが実行されるとプログラムが終了するため、これは不可能です。(のmanページからexecve()execve()成功しても返されません)。

execve()2コールを実行するにはどうすればよいですか? または、同じシェル コードからと の両方/usr/bin/killallを呼び出す別の方法はありますか?/usr/bin/wget

よろしくお願いします!

4

2 に答える 2

1

まず、2execve()つを連続して実行することはできません。定義上、execve()呼び出しは元のプロセスのメモリを新しいプロセスで上書きし、元のプロセスに再び切り替えることはできなくなるためです。

コマンドがシェルコード自体を実行しているプロセスを強制終了していない場合、提案する2番目のオプション(シェルコードにマージする/usr/bin/killall/usr/bin/wgetは完全に可能です。killallもしそうなら、なぜこの動作が必要なのかについてもっと情報が必要です。

于 2013-04-05T09:22:22.897 に答える