能力值:
( LV2,RANK:10 )
|
-
-
2 楼
找到原因了.
是call的问题.
但是很奇怪
call的是同一个地址.一个是有参数的.一个是无参数的.
无参数成功.有参数的内存错误..郁闷.
在游戏没更新之间没问题的..
请教一下这是为什么呢??
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
第一个
mov ecx,esi
call Address
成功
第二个
push 1
push 0 <---这里就是参数.我直接压入0
mov ecx,esi
call Address
出现内存错误..
这是为什么呢`??实在想不出来原因- -||
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
根据出错内存信息.我跟到了.好像这里有个实时的数据校验
0065E1E0 55 PUSH EBP
0065E1E1 8BEC MOV EBP,ESP
0065E1E3 8BC1 MOV EAX,ECX
0065E1E5 8A48 08 MOV CL,BYTE PTR DS:[EAX+8] <--传入01
0065E1E8 84C9 TEST CL,CL
0065E1EA 74 37 JE SHORT Fiesta.0065E223 <--这里好像不会跳的.
0065E1EC 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C]
0065E1EF 53 PUSH EBX
0065E1F0 56 PUSH ESI
0065E1F1 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8] <--这里应该是传下面数据的长度
0065E1F4 57 PUSH EDI
0065E1F5 8BB8 10800000 MOV EDI,DWORD PTR DS:[EAX+8010]
0065E1FB 8BCA MOV ECX,EDX
0065E1FD 8BD9 MOV EBX,ECX
0065E1FF C1E9 02 SHR ECX,2
0065E202 8DBC38 14800000 LEA EDI,DWORD PTR DS:[EAX+EDI+8014]
0065E209 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
0065E20B 8BCB MOV ECX,EBX
0065E20D 83E1 03 AND ECX,3
0065E210 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] <--在这里弹出错误信息
0065E212 8B88 10800000 MOV ECX,DWORD PTR DS:[EAX+8010]
0065E218 5F POP EDI
0065E219 03CA ADD ECX,EDX
0065E21B 5E POP ESI
0065E21C 8988 10800000 MOV DWORD PTR DS:[EAX+8010],ECX
0065E222 5B POP EBX
0065E223 5D POP EBP
0065E224 C2 0800 RETN 8
我汇编太差..看不懂..- -||
希望达人帮我看下``
这段大体是什么意思``为什么能起到校验的效果.原理是什么``
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
汇编太差都做挂,这世道变了
|
能力值:
( LV9,RANK:1210 )
|
-
-
6 楼
ecx是this指针
0065E1E5 8A48 08 MOV CL,BYTE PTR DS:[EAX+8] 成员变量
2个参数为pBuffer,cbSize,数据传到另外的成员变量了
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
……机器永远是机器!
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我用使用外挂的时候跟正常的时候.比较一下看看吧..这种方法最简单了..
|
能力值:
( LV6,RANK:90 )
|
-
-
9 楼
看你call无参数的成功,有参数的失败, 看看弹出的错误是不是 上面显示esp什么什么的,
你在有参数的后面 加上add esp, 8 看看,即
push 1
push 0 <---这里就是参数.我直接压入0
ov ecx,esi
call Address
add esp, 8
|
能力值:
( LV6,RANK:90 )
|
-
-
10 楼
你把它当静态类成员函数用了。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
晕...高手讨论...我看不懂...
但这个反外挂我非常喜欢....学习中
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
又跟了下.我用使用外挂的时候跟不使用外挂的时候做对比.得出个结论
0065E1E0 55 PUSH EBP
0065E1E1 8BEC MOV EBP,ESP
0065E1E3 8BC1 MOV EAX,ECX <---使用外挂和不使用外挂这里ECX是不一样的.不使用外挂这里ECX地址里面的值一般是1,若使用外挂就跳到一个随即的地址好像.这个地址里头存的值是??不确定.
0065E1E5 8A48 08 MOV CL,BYTE PTR DS:[EAX+8] <--传入01或不确定的??
0065E1E8 84C9 TEST CL,CL <---若这里使用外挂,既传入的是??,那么就弹错,但是我不会修改..谁帮帮我..55555
0065E1EA 74 37 JE SHORT Fiesta.0065E223 <--这里好像不会跳的.
0065E1EC 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C]
0065E1EF 53 PUSH EBX
0065E1F0 56 PUSH ESI
0065E1F1 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8] <--这里应该是传下面数据的长度
0065E1F4 57 PUSH EDI
0065E1F5 8BB8 10800000 MOV EDI,DWORD PTR DS:[EAX+8010]
0065E1FB 8BCA MOV ECX,EDX
0065E1FD 8BD9 MOV EBX,ECX
0065E1FF C1E9 02 SHR ECX,2
0065E202 8DBC38 14800000 LEA EDI,DWORD PTR DS:[EAX+EDI+8014]
0065E209 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
0065E20B 8BCB MOV ECX,EBX
0065E20D 83E1 03 AND ECX,3
0065E210 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] <--在这里弹出错误信息
0065E212 8B88 10800000 MOV ECX,DWORD PTR DS:[EAX+8010]
0065E218 5F POP EDI
0065E219 03CA ADD ECX,EDX
0065E21B 5E POP ESI
0065E21C 8988 10800000 MOV DWORD PTR DS:[EAX+8010],ECX
0065E222 5B POP EBX
0065E223 5D POP EBP
0065E224 C2 0800 RETN 8
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
call是没问题的..弹出的错误显示的是65E1E0内存错误.所以我从这里跟进去.发现有个校验.应该不会是call的问题.因为call还是会成功的.只不过弹错.弹到一定数量后,游戏崩溃.
我不太理解.可以再详细说下么?静态类成员函数??貌似我就知道静态类成员函数可以没对象- -||
|
能力值:
(RANK:1060 )
|
-
-
14 楼
伊艾斯爱娜丽莱
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
晕..我跟错了.这是字符串处理.
我地址写错了..我真想杀了自己!!
|
能力值:
( LV6,RANK:90 )
|
-
-
16 楼
0065E1E0 55 PUSH EBP
0065E1E1 8BEC MOV EBP,ESP
0065E1E3 8BC1 MOV EAX,ECX
这里用到了ecx,call这个函数之前要对ecx赋值,可能是一个变量,一个句柄等等
push 1
push 0
mov ecx,esi
call Address
外挂是这样的话,他之前esi里有那个变量,赋值到ecx里 函数不会出错,你的代码是注入的,调用当时的esi里是什么东西有没经过确定?
|
能力值:
( LV13,RANK:410 )
|
-
-
17 楼
眼拙。看错了。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
我倒。。。佩服楼主。。。。
|
能力值:
( LV9,RANK:210 )
|
-
-
19 楼
有个省事的办法,用按键精灵做个小程序,错误窗口出来一个关闭一个,就不会崩溃了八
反正call都成功了。、、、
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
根据经验 是因为你参数没构造好~~~ 或者在这个CALL之前有个还有个前提CALL你没调用 你检查下
|
|
|