您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页五种找基址的方法

五种找基址的方法

来源:华佗健康网


一,纯肉眼跟踪法

先用CE搜索一下是谁在改写当前的血量

0048 |. 96 5C020000 MOV DWORD PTR DS:[ESI+25C],EDX

Dd esi+25c

向上找到头

004563A5 |. 8BF1 MOV ESI,ECX//ecx+25c

Dd ecx+25c

在头部F2下断,看返回地址

0057B924 . 8BC8 MOV ECX,EAX

Dd eax+25c

0057B903 |. 8B40 24 MOV EAX,DWORD PTR DS:[EAX+24]

Dd [eax+24]+25c

0057B900 /$ 8B41 08 MOV EAX,DWORD PTR DS:[ECX+8]

Dd [[ecx+8]+24]+25c

在上面的头部下断,

005747AF |. /EB 0D |JMP SHORT elementc.005747BE //返回在这里

005747A1 |. 8B4C85 1C |MOV ECX,DWORD PTR SS:[EBP+EAX*4+1C]

Dd [[[EBP+EAX*4+1C]+8]+24]+25c

……

假设EAX=0

Dd [[[EBP+1C]+8]+24]+25c

找到头部

0057473C |. 8B68 08 MOV EBP,DWORD PTR DS:[EAX+8]

Dd [[[[eax+8]+1C]+8]+24]+25c

00574736 |. 8BD9 MOV EBX,ECX

Dd [[[[[ecx+4]+8]+1C]+8]+24]+25c

004395D2 |> \\8B4D 5C MOV ECX,DWORD PTR SS:[EBP+5C]

Dd [[[[[[ebp+5c]+4]+8]+1C]+8]+24]+25c

找到头部

004394A4 |. 8BE9 MOV EBP,ECX

Dd [[[[[[ecx+5c]+4]+8]+1C]+8]+24]+25c

向上找

00438B82 |. 8BCD MOV ECX,EBP

往上找……很长,在头部

00438145 |. 8BE9 MOV EBP,ECX

Dd [[[[[[ecx+5c]+4]+8]+1C]+8]+24]+25c

返到上一级

0042C8AC |. 8B4D 1C MOV ECX,DWORD PTR SS:[EBP+1C]

Dd [[[[[[[ebp+1c]+5c]+4]+8]+1C]+8]+24]+25c

|Dd ; [[[[[[EBP+5c]+4]+8]+1C]+8]+24]+25c

走到头部

0042C7BB |. 8BE9 MOV EBP,ECX

Dd [[[[[[[ecx+1c]+5c]+4]+8]+1C]+8]+24]+25c

最后在

0042C6B9 |. 8BCF |MOV ECX,EDI

Dd [[[[[[[edi+1c]+5c]+4]+8]+1C]+8]+24]+25c

看了一下EDI的值,是009811A0这个就是基址,

Dd [[[[[[[009811A0+1c]+5c]+4]+8]+1C]+8]+24]+25c

根据XHY30同学们找的基址来对比

dd [[[[[009811A0+1c]+8]+1c]+8]+24]+25c

二,CE/OD配合查找法

1,先在CE里搜索到血值

下断HW 081423FC

0048 |. 96 5C020000 MOV DWORD PTR DS:[ESI+25C],EDX ; 写入血值 Dd esi+25c

Dd esi+25c

004563A5 |. 8BF1 MOV ESI,ECX

Dd ecx+25c

找到头部下断向上找

0057B924 . 8BC8 MOV ECX,EAX ;

Dd eax+25c

因为再向上找会找到数组和循环,所以老师在这里用CE里搜索ECX的值

在这里记录EAX的值,然后用CE查找

随便找一个值搜索一下

然后HR下断,09D58FF4 马上被断了下来

004745F0 /$ 8B49 1C MOV ECX,DWORD PTR DS:[ECX+1C]

004745F3 |. 33C0 XOR EAX,EAX

dd ecx+25c

dd [ecx+1c]+25c

然后找到ECX的值,用CE来搜索,这次只找到三个值,老师随便选了第二个

HR 09BE436C

00462B23 . 8B86 1C090000 MOV EAX,DWORD PTR DS:[ESI+91C]

00462B29 . 8B78 14 MOV EDI,DWORD PTR DS:[EAX+14]

dd [[eax+14]+1c]+25c

dd [[[esi+91c]+14]+1c]+25c

00462AA9 . 8BF1 MOV ESI,ECX

dd [[[ecx+91c]+14]+1c]+25c

找到头部下断,返到上级CALL

004395D2 |> \\8B4D 5C MOV ECX,DWORD PTR SS:[EBP+5C]

Dd [[[[[[ebp+5c]+4]+8]+1C]+8]+24]+25c

00439537 |. 84C0 TEST AL,AL

老师在这里下断

00439534 |. 8B4D 24 MOV ECX,DWORD PTR SS:[EBP+24]

dd [[[[ebp+24]+91c]+14]+1c]+25c

找到头部

004394A4 |. 8BE9 MOV EBP,ECX

dd [[[[ECX+24]+91c]+14]+1c]+25c

再返回上级

00438B82 |. 8BCD MOV ECX,EBP

dd [[[[EBP+24]+91c]+14]+1c]+25c

找到函数头部发现EBP也是上级的ECX

0042C8AC |. 8B4D 1C MOV ECX,DWORD PTR SS:[EBP+1C]

dd [[[[[EBP+1C]+24]+91c]+14]+1c]+25c

找到函数头部……很长……

00438145 |. 8BE9 MOV EBP,ECX

Dd [[[[[[ecx+5c]+4]+8]+1C]+8]+24]+25c

返回上级

0042C7BB |. 8BE9 MOV EBP,ECX

dd [[[[[ECX+1C]+24]+91c]+14]+1c]+25c

再返回上级

0042C8AC |. 8B4D 1C MOV ECX,DWORD PTR SS:[EBP+1C]

Dd [[[[[[[ebp+1c]+5c]+4]+8]+1C]+8]+24]+25c

找到头部

0042C7BB |. 8BE9 MOV EBP,ECX

Dd [[[[[[[ecx+1c]+5c]+4]+8]+1C]+8]+24]+25c

0042C794 |> \\8BCF MOV ECX,EDI

Dd [[[[[[[EDI+1c]+5c]+4]+8]+1C]+8]+24]+25c

0042C6E2 |. 8BF9 MOV EDI,ECX

找到头部

dd [[[[[ECX+1C]+24]+91c]+14]+1c]+25c

也是上级的ECX

00443F6A |> \\B9 A0119800 |MOV ECX,elementc.009811A0

dd [[[[[009811A0+1C]+24]+91c]+14]+1c]+25c

三,HR断点法(感谢COOE同学)

还是先用CE查找出血值写入地址,用OD附加

0048 |. 96 5C020000 MOV DWORD PTR DS:[ESI+25C],EDX

Dd esi+25c

查找ESI值的来源,HR 0857CE48

00439534 |. 8B4D 24 MOV ECX,DWORD PTR SS:[EBP+24]

dd [[ebp+24]+25C]

查找EBP来源,HR 03230D80,但是断不下来03230D80

向上找到头部

004394A4 |. 8BE9 MOV EBP,ECX

dd [[ECX+24]+25C]

再返回上级

00438B82 |. 8BCD MOV ECX,EBP

dd [[EBP+24]+25C]

找到函数头部发现EBP也是上级的ECX

dd [[ECX+24]+25C]

0042C8AC |. 8B4D 1C MOV ECX,DWORD PTR SS:[EBP+1C]

dd [[[EBP+1C]+24]+25C]

找到头部

0042C7BB |. 8BE9 MOV EBP,ECX

dd [[[ECX+1C]+24]+25C]

0042C794 |> \\8BCF MOV ECX,EDI

dd [[[EDI+1C]+24]+25C]

0042C6E2 |. 8BF9 MOV EDI,ECX

找到头部

dd [[[ECX+1C]+24]+25C]

也是上级的ECX

00443F6A |> \\B9 A0119800 |MOV ECX,elementc.009811A0

dd [[[009811A0+1C]+24]+25C]

四,直接内存访问法(感谢lfscomic)

首先是用CE查找到血值地址,然后看一下是谁在访问这个地址,

或者是在OD里下HR+当前血值地址

也就是说我们这次不是搜索谁在写入它,而只搜索谁在访问它

发现是004E705B MOV EDX,DWORD PTR DS:[ESI+25C]

dd [[[009811A0+1C]+24]+25C]

五,纯CE查找基址

搜索ESI的16进制值07C0DE98

搜索16进制EBP的值03230D80

搜索EBP的16进制值009811A0

最终得出结论

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务