特定のブロックがどのように機能するかを理解するのは苦労しています。ヒープアセンブリメモリの数学とループ
004B0000 73 6D 67 66 74 smgft
と、次のアセンブリ上の次のアドレスで:
77A701B8 xor eax, eax
77A701BA mov ecx, 4
77A701BF lea edi, DWORD PTR DS:[ecx+4B0000]
77A701C5 xor DWORD PTR DS:[edi], ecx
77A701C5 loopd short ntdll.77A701BF
問題は、命令が実行された後にASCIIでヒープ上に5バイトの価値を提供することです。
のXOR EAX、EAXを次のようにそれがあるから、私は何を理解することができます。 0 out eax
mov ecx、4;セットECX 4
LEAのEDI、DWORD PTRのDS:[ECX + 4b0000]。 ecx + 4b0000に格納されているものはすべてEDIにロードされるので、4b0004になります。私はこれが何を得るのか分からない。私は4b0000が得られるかどうかも分かりません。なぜなら、5バイトだからです。 mgft、またはsmgf?私はsmgfだと思いますか? + 4hはこれにどのように影響しますか?それは736D676678になりますか?
XOR DWORD PTRのDS:[EDI]、ECX。これはediに新しくロードされたdwordを使ってxorまたは4hになりますが、loopdの中ではどうなりますか?
loopd short ntdll.77A701BF;だから、これは "等しい時にループ"ですが、私はその上にxorで何が翻訳されるのか分かりません。それはecxを減少させますか?しかし、それはリーラインにジャンプします。
それはEFLAGS(XORセット)気にしないので、それは、 'loop'、ない' loope'(等しいwhileループ)です。 http://www.felixcloutier.com/x86/LOOP:LOOPcc.htmlを参照してください。 –