突っ込みどころが多すぎて混乱しているのですが・・・えーと・・・
まず、DWriteMemorySは文字列を書き換える時に使うもので、
今回は数値型なのでDWriteMemoryを使います。
そして、
>この00A65C40が00913588となってないといけないと思います。
この文から察するに、souさんはどうやら重大な勘違いをしているのでは無いでしょうか?
00A65C40はこの場合、変数データのポインタを示すものであり、
DWriteMemoryを使って書き換えてもこの値は変化しません。
例を挙げれば、
1つだけ物を入れられる「箱」がたくさんあると想像して下さい。
その「箱」には「ポインタ」と呼ばれるそれぞれの「箱」を区別するための番号が決められています。
この「ポインタ」は区別をするための番号に過ぎませんので、
中身を入れ替えたところで箱の「ポインタ」が変わるようなことはありません。
DWriteMemoryはこの「箱の中身」を変更するための命令です。
DWriteMemory pid,adr,wdata,4
したがって上記のコードでは、
「箱のポインタ(adr)」ではなく、「箱の中身(code1)」が書き換えられます。
以下に具体的なコードを書いておきます。
#uselib "HMemory.dll"
#func DWriteMemory "DWriteMemory" var,int,int,int
#func GetID "GetID" str,var
code1 = 00913588
adr = varptr(code1)
//書き換える値
code2 = 1234567
wdata = code2
GetID "hsp3.exe",pid
mes "書き換え前 ⇒ code1 = " + code1
DWriteMemory pid,adr,wdata,4 : wait 100
mes "書き換え後 ⇒ code1 = " + code1
※わかりやすくする為、少し特殊な解釈をしています。