2017-03-15 10 views
-1
.text:004430FE     jz  short loc_44311B 
.text:00443100     push 30h    ; uType 
.text:00443102     push offset Athingy; "Hello" 
.text:00443107     push offset AnotherThingy; "Works" 
.text:0044310C     call sub_438090 
.text:00443111     add  esp, 0Ch 
.text:00443114     push 0 
.text:00443116     call sub_44C424 
.text:0044311B 
.text:0044311B loc_44311B:        ; CODE XREF: sub_442C70+48Ej 
.text:0044311B     mov  ecx, 0FAh 
.text:00443120     mov  esi, offset buf 
.text:00443125     lea  edi, [ebp+var_3FC] 
.text:0044312B     rep movsd 
.text:0044312D     push offset aTest; "test" 
.text:00443132     lea  eax, [ebp+var_3FC] 
.text:00443138     push eax 
.text:00443139     call sub_465450 
.text:0044313E     add  esp, 8 

jz(上端)をjmpに変更して、add esp, 8に設定したい場合は、どうすればできますか?IDAでJMPを使用するには?

私はプログラムにパッチを当てて組み立てる方法を知っていますが、jmpについては何を入力しますか?

答えて

1

短いjmpのオペコードは、Intelのマニュアルで調べることができます。私は便利ではありませんが、メモリが提供されている場合は0xEBです。

jmpオフセットの計算に使用する式は(ターゲットアドレス - jmp命令のアドレス-2)です。 (2は、その引数を含むショートジャンプ命令の長さであるため、CPUは、命令ポインタ値がジャンプ命令に続くものにオフセットを加える)。

+0

オペランドが無効です。https://gyazo.com/55606885ef31d72f9b44fdb3cee8f69a –

+0

あなたは提示できませんでした。 –

+0

@RohanPasああ!あなたは戻って来る。私が今あなたを助けることが絶望的であることを知っている限り、私はあなたにこの最後の助言を与えるでしょう - あなたが 'オペコード'が何であるか(あるいはデータが '.data'にどのように格納されるのか、 500は、私が行ったのとまったく同じJMPオフセット式を与えましたか?)。もう一度IDAを使う前に、本を叩いてください。 "K&R C"のような本を読んで、 "リバースエンジニアリングの技術"のような本を試してください –

関連する問題