|
|
1,打坐
下bp send 返回4次的CALL
CALL 004AE4B0
特征码
ADD ESP,4
POP EDI
POP ESI
MOV BYTE PTR SS:[ESP+8],1
MOV AL,BYTE PTR SS:[ESP+8]
POP EBP
POP EBX
ADD ESP,1C4
找到后下面第二个CALL就是
2、找血值,查找访问
004D3FB4 8>MOV ECX,DWORD PTR SS:[EBP+40]
004D3FB7 8>MOV EDX,DWORD PTR DS:[ESI+608]
004D3FBD 5> USH ECX
004D3FBE 5> USH EDX
004D3FBF 8>MOV ECX,ESI
向上看
004D3F2B A>MOV EAX,DWORD PTR DS:[A91384]
004D3F30 8>MOV EBP,DWORD PTR DS:[EAX+528]
004D3F36 8>TEST EBP,EBP
004D3F38 8>MOV DWORD PTR SS:[ESP+38],EBP
Dd [[00a91384]+528]+40 //当前血量
Dd [[00a91384]+528]+44 //最大血量
3.找蓝
用CE查找访问
发现00000fae比较像
Dd [[00a91384]+528]+0fae //当前蓝
Dd [[00a91384]+528]+0fb2 //最大蓝
一级基址特征码
MOV ECX,DWORD PTR DS:[ESI+5E4]
MOV EDX,DWORD PTR DS:[ECX]
PUSH 1
CALL DWORD PTR DS:[EDX+54]
[其它]
Dd [[00a91384]+528]+2c //X坐标
Dd [[00a91384]+528]+30 //Y坐标
Dd [[00a91384]+528]+0F9C //等级
Db [[00a91384]+528]+4 //人名
Db [[00a91384]+528]+900 //国家
Db [00a91384]+408 //地图名
dd [00a91384]+52c //目标对象
db [[00a91384]+52c]+4 //对象名字
db [[00a91384]+52c]+564 //镖车所属人
[走路]
通过特征码搜索出来
004E4E8C 8>MOV ECX,DWORD PTR DS:[EAX+528]
004E4E92 6> USH 0
004E4E94 6> USH 0
004E4E96 5> USH EBP
004E4E97 5> USH EBX
004E4E98 E>CALL zhengtu.00465B10
004E4E9D 5> OP EBP
004E4E9E 5> OP EBX
004E4E9F 5> OP EDI
004E4EA0 B>MOV AL,1
004E4EA2 5> OP ESI
004E4EA3 5>POP ECX
004E4EA4 C>RETN 10
特征码
MOV ECX,DWORD PTR DS:[EAX+528]
PUSH 0
PUSH 0
PUSH EBP
PUSH EBX
CALL XXXXXXX
POP EBP
POP EBX
POP EDI
MOV AL,1
POP ESI
POP ECX
RETN 10
对话NPC
BP SEND返回4次
00459DCB |> \5>PUSH EDI
00459DCC |. 8>MOV ECX,ESI
00459DCE |. E>CALL zhengtu.00459360
EDI就是NPC,向上找EDI
00459A08 |. 8>MOV EDI,DWORD PTR SS:[ESP+2C]
00459A0C |. 0>JE zhengtu.00459BBD
向上找到头部,然后找到上级CALL
0045EC52 |. 5>PUSH EDX ; /dd EDX
0045EC53 |. 6>PUSH 201 ; |Arg1 = 00000201
0045EC58 |. 8>MOV ECX,ESI ; |
0045EC5A |. E>CALL zhengtu.00459910 ; \zhengtu.00459910
但是没找到
搜索旁边NPC的名字
找到后将其改名,看哪个是当前的,下写入检测,然后跑开,再跑回来
004302DD |. 8>MOV DWORD PTR DS:[EAX],ESI
004302DF |. F>DEC DWORD PTR DS:[ECX+4]
004302E2 |. 8>MOV ECX,DWORD PTR DS:[EAX+4]
004302E5 |. 8>MOV EDX,DWORD PTR DS:[ECX+4] ; NPC名
向上找
0043027B |. A>MOV EAX,DWORD PTR DS:[A913D4] ; dd [[0a913d4]+4]+4
00430280 |. 8>TEST EAX,EAX
00430282 |. C>MOV DWORD PTR SS:[ESP+10],0
0043028A |. 7>JNZ SHORT zhengtu.004302D7 ; 跳了
dd [[0a913d4]+4]+4
008B0910 /$ 8>MOV EAX,ECX
008B0912 |. 3>XOR CL,CL
008B0914 |. C>MOV DWORD PTR DS:[EAX],zhengtu.009AE864
008B091A |. 8>MOV BYTE PTR DS:[EAX+25],CL ; NPC写入断点
008B091D |. C>MOV DWORD PTR DS:[EAX+28],-1
008B0924 |. 8>MOV BYTE PTR DS:[EAX+4],CL
008B0927 \. C>RETN
再到[0A913D4]+4这里下断,因为这里总在变化写NPC的名字
0041887E . E>CALL zhengtu.00418300 ; 写入NPC
00418883 . 8>MOV ECX,DWORD PTR DS:[ESI+6]
00418886 . 8>LEA EDX,DWORD PTR DS:[ESI+ECX+A]
跟踪
00418B58 . E>CALL zhengtu.004398E0 ; \改NPC
跟踪
00439955 |> \E>CALL zhengtu.00430250 ; 改NPC
找到来源dd [[0A913D4]+4]
结果发现这样的东西
db [[[[[[[[0a913d4]+4]]]]]]]+8
是NPC,但名字却不全???
上面找的都失败了
重新在OD里dd [[0A913D4]+4]关键入下硬件写入中断
004303F5 |. 8>MOV ECX,DWORD PTR DS:[EAX+4] ; 清除NPC断点
向上找
0043039F |. 8>MOV EAX,DWORD PTR DS:[ESI+66C] ; dd [esi+66c]+4
找到上级CALL
0043A1C0 |. 5>|PUSH EDI ; dd edi
0043A1C1 |. E>|CALL zhengtu.00430370
找上级CALL
0043BFF1 . 8>MOV ECX,EBP ; dd [[[ebp+48c]]+66c]+4
0043BFF3 . E>CALL zhengtu.0043A180
经过CE搜索,找到如下值
dd [[[[00a91384]+48c]]+66c]+4
然后通过遍历得知
db [[[00a91384]+48c]+0]+4
db [[[00a91384]+48c]+4]+4
db [[[00a91384]+48c]+8]+4
遍历用法 [[[00a83DE4]+48c]0..4 600]+4
这样的话就可以找镖车了哇哈哈
db [[[00a91384]+48c]+0..N]+4
对话NPC(直接通过怀旧找特征码)
特征码
MOV EAX,DWORD PTR DS:[ESI+1468]
LEA EDX,DWORD PTR SS:[ESP+38]
PUSH EDX
PUSH EAX
PUSH EDI
上面的CALL就是
[对话菜单]
代码注入器测试成功
push 0
mov ecx,[95B0A4]
call 005f9610
这个PUSH 0就是第一个菜单,1就是第二个菜单
打开菜单特征码如下:
POP EDI
POP ESI
POP EBP
MOV AL,1
POP EBX
RETN 0C
CMP DWORD PTR SS:[ESP+18],-1
找到后上面的CALL就是
|
|