要するに
ecx
exeファイルの次の命令を置き換えることにより、上位ワードに0が含まれていることを確認する最も簡単な方法は何ですか?
004044be 0fbf4dfc movsx ecx,word ptr [ebp-4]
FFFF9298
address を実行した後に含むのではなく、 を含め004044be
たいと思いecx
ます00009298
。
私は何を試しましたか
実行可能ファイルのオペコードを置き換えることmovsx
で単純なものに置き換えようとしましたが、計画どおりに機能しませんでした(デバッガを使用して変更を確認しましたが、正しい場所にあったと確信しています)mov
0fbf
8b0c
いくつかの背景
HPプリンターに印刷しようとすると、何らかの理由でAVが発生するかなり古いプログラムがあります。CutePDF に印刷するとすべて正常に動作するため、現在の回避策は PDF ファイルを生成して PDF を印刷することです。
WinDbg で足を濡らして、なぜこれが起こっているのか理由を見つけようとしました。これは私の問題の根本的な原因ではありませんが、ecx
ある時点で get がメモリの割り当てに使用される負の値になり、最終的に例外が発生するようです。
負の値が返される理由を見つけようとすることはできましたが、デバッグ セッション中に、上位ワードをゼロにするとecx
うまくいったことに気付きました(つまり、ファイルを印刷しました)。
したがって、アドレスをFFFF9298
実行した後に含むのではなく、含む004044be
ようにしたいと思いecx
ます00009298
。
004044ac 0fbf05e8025100 movsx eax,word ptr [Encore32!SystemsPerPageDlogProc+0x10e4a1 (005102e8)]
004044b3 05416f0000 add eax,6F41h
004044b8 668945fc mov word ptr [ebp-4],ax
004044bc 6a40 push 40h
004044be 0fbf4dfc movsx ecx,word ptr [ebp-4] --> replace with ?
004044c2 51 push ecx
004044c3 8b55f8 mov edx,dword ptr [ebp-8]
004044c6 52 push edx