なんかいろいろこんぴゅーたかんけいのなぐりがき

なんか勉強しているこんぴゅーた関係のことのメモやそれ以外のことを書こうかなあ...

logs

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C10

チャプター10。
Linuxでのシェルコードの書き方について詳しく記述されている。

基本的にこのチャプタでの流れは、

シェルコードの特徴の説明

C言語での実装

アセンブリ言語での実装

objdump -d  によってマシン語の抽出

抽出したマシン語を手でシェルコードとして入力


char sc[]=
//ここにシェルコード;
main()
{
void (*fp) (void);
fp = (void *)sc;
fp();
}

によってシェルコードの動作実験を行う

といった感じ。
マシン語をobjdum -dによって出力して、ひとつひとつエディタで入力していくのは面倒くさいので、pythonでobjdump -d の結果からC言語における配列にそのまま突っ込める形で出力してくれるスクリプトをやっつけで書いたので一応置いておく。

次回に続く。



import sys
if len(sys.argv) != 3 :print "usage:",sys.argv[0],"inputfile <-c> or <-r>";sys.exit()
r = open(sys.argv[1],"r")
for line in r:
if line.find("\t") == -1:continue
else:
left = line.find("\t")
line = line[left+1:]
if line.find("\t") == -1:continue
right = line.find("\t")
line = line[:right]
parts = line.split(" ")
if sys.argv[2] == "-c":
for x in parts:
if x!= "": sys.stdout.write("\\x"+x)
elif sys.argv[2] == "-r":
for x in parts:
if x != "": print x


スポンサーサイト

トラックバックURL

http://ilovevim.blog42.fc2.com/tb.php/94-b23dc61b

この記事へのトラックバック

この記事へのコメント

コメント投稿フォーム

Paging Navigation

Navigations, etc.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。