2011-01-10 11 views
1

コンソールプログラムを「クラックさせて」何かを表示させようとしています。問題は、改行(\r\n)を印刷できないことです。私は改行を印刷することができない、言ったように実行ファイルを編集するprintf()を呼び出す

push 4ad0eb46      ; the string (let's pretend "Hi guys") 
push 4ad0eb80      ; and the format ("%s") 
call near ds:[<&msvcrt.printf>] ; call printf 
jmp 4ad0eb4f      ; skip data 

; now here I coded the strings 

mov ds:[4ad289ec],eax    ; and here the program resumes 

:私は場所を発見し、バイナリを編集しdisasseblerで 。私は"%s\r\n"となりますので、"%s\r\n"となりますので、"Hi guys\r\n"を印刷して 文字列(それを"Hi guys\x13\x10"とする)にエンコードし、"Hi guys"と2つの奇妙な文字、おそらくASCIIを取得します。 0x13と0x10の表現。

+0

あなたが持っている「奇妙なキャラクター」はなんですか?あなたにとって奇妙に思われることは、他の人にとって有益な情報かもしれません。 –

+0

一種の「!!」 '|>'と似た三角形 – BlackBear

答えて

2

文字を文字列に直接埋め込む2回目の試みが正しいアプローチでした。しかし、間違った文字番号を使用しました。 Return/LinefeedのASCIIの数値は13と10(10進数)で、0x0dと0x0a(16進数)です。あなたは異なる文字である0x13と0x10を使用しました。

文字番号はCode page 437の表を参照してください。文字19と16(10進数)は、実際には右向きの三角形と二重の感嘆符です。

+0

ありがとう、固定。それは今働く。 ;) – BlackBear

1

改行(Windowsの場合)は\r\nです。

+0

Ops!私は編集します。 ;)しかし、それはとにかく動作しません.. – BlackBear

関連する問題