基址的问题
00561DB9 .8B2D F4488E00 mov ebp,dword ptr ds: 这里的ebp是什么?难道是从上级来的,还是临时值,此处下断寄存器ebp=0012F778,该怎么办?00561DBF .8BBD 448C0000 mov edi,dword ptr ss: 是否应该在此处搜索ebp?
00561DC5 .81C5 308B0000 add ebp,0x8B30
00561DCB .69FF B8130100 imul edi,edi,0x113B8
00561DD1 .033D 40552C01 add edi,dword ptr ds:
00561DD7 .6A 64 push 0x64
00561DD9 .8B87 48100000 mov eax,dword ptr ds:
00561DDF .8906 mov dword ptr ds:,eax
00561DE1 .8B8F 58100000 mov ecx,dword ptr ds:
00561DE7 .894E 14 mov dword ptr ds:,ecx
00561DEA .8B97 64100000 mov edx,dword ptr ds:
00561DF0 .8956 18 mov dword ptr ds:,edx
00561DF3 .8B87 60100000 mov eax,dword ptr ds:
00561DF9 .8946 1C mov dword ptr ds:,eax
00561DFC .8B8F 04130100 mov ecx,dword ptr ds:
00561E02 .894E 08 mov dword ptr ds:,ecx
00561E05 .8B97 00130100 mov edx,dword ptr ds: 用CE搜游戏人物当前血量,然后在OD差内存访问,跳转到此行
mov esi,dword ptr ds://esi为人物基址
mov edi,dword ptr ss://人物基址加上偏移8c44
imul edi,edi,0x113B8 //进行运算得出结果
add edi,dword ptr ds: //拿上一步得出的结果加上0x12C5540里的值
mov edx,dword ptr ds://最后就是各种运算之后的结果加上11300偏移的值就是血值啦
希望越办越好, 海加油 我是小白。。。推论下:
*113B8+将这个计算出结果然后加上11300就是血的偏移吗? 应该是
[+8c44]*113B8++11300
procedure TForm1.btn1Click(Sender: TObject);
var
tmp,get1,get2,consequence:^Dword;
begin
//[+8c44]*113B8++11300
tmp:=pointer($008E48F4); //
tmp:=pointer(tmp^+$8C44); //[+8c44]
get1:=pointer(tmp^*$113B8); //如果是..[+8c44]+113B8
get2:=pointer(tmp^*$113B8+$12C5540+$11300); //如果是..[+8c44]+113B8++11300
consequence:=Pointer(get1^+$12C5540+$11300); //如果是..[[+8c44]+113B8]++11300
edt1.text:=IntToStr(get2^); //顯示get2的值
edt2.text:=IntToStr(Consequence^); //顯示consequence的值
end;delphi 的話應該是這樣.. {,IWjt &>
遍历如果沒錯的話應該是在
//[+8c44]*113B8
//[+8c44]+I*113B8
是的只是推論
但你只是人物當前血量應該不需要遍历才對
//[+8c44]+I*113B8++11300
你就先試試看吧, 看看這樣取對不對 ~ ~ 就喜欢楼主这样的哈哈哈 回复就能得海币,我爱你!
页:
[1]
2