能力值:
( LV2,RANK:10 )
|
-
-
2 楼
我也摸索中。,,,,
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
这种工具需要自己搞了,正在学习和试验中............
头大!!!!!!!!!!!!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
有没有这方面的学习资料啊? 现在就遇到个动态算法的程序...郁闷啊
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
偶提点浅薄看法:
如果是针对游戏,除了程序本身下手分析之外,还可以对脚本系统下手.
偶在跟踪单机游戏时,找游戏中下一情节将要显示的文字,然后下断,找到事件引擎,再下断分析事件代码与事件流程.
这样处理动态内存比较顺当.
比如某单机版游戏有个剧情事件脚本文件,里面获得物品的函数为:
EA 07 00 00 XX XX 00 00 YY YY 00 00 ZZ ZZ 00 00
其中:
EA 07 00 00是获得物品函数
XX XX 00 00是获得物品的代码
YY YY 00 00是获得物品的数量
ZZ ZZ 00 00是获得物品人的人物代码
然后在程序中对应的脚本解释执行引擎中有如下代码(根据记忆写出):
MOV EAX,DWORD PTR [ESP+10]
CMP EAX,000007EA
JG XXXXXXXX
JE YYYYYYYY
......
CMP EAX,00000304
JG MMMMMMMM
JE NNNNNNNN
,,,,,,
如果由此跟下去,动静结合分析,就把整个获得物品的代码流程都掌握了.
虽然在游戏中物品的内存地址搞成了动态数据,却有了两种解决办法:
一.解除脚本文件中的格式限制,自己重写脚本文件.
二.在上面代码中寻找注入点,自己写一段检测代码,只要是获得物品事件,就可以进行自己的操作.
另外,对于一些有上限限制的属性数据,在程序中必然要加上检测代码,检测是否超出该限制数值.对于简单的修改,可以对这些指令下手.
从游戏编程角度看,人物的属性数据有两种编制方法:
1.固定等级对应固定数值法.对于这种方法,要有一张数值表,可以查找这张数值表.
2.固定计算方法计算不同等级数值法.这种方法需要一个基数数值.然后再加入随机数参与计算,这样你重复游戏时会发现同一等级会出现不同的属性数值.对于这种类型,关键是查找基值.根据基值去找计算的方法.
|