2010-9-10 14:01
coarsemelody
研究改exe有关外挂dll,剧本指令,ollydbg使用技巧的疑问
新人发帖,如有不合规矩之处,望见谅
最近想和同学一起做mod,研究exe的更改时,发现很多难关,原本自己攻克或许有可能,但是如果有前人的经验,何必重复造相同的车轮?
直奔主题:
1. 我发现论坛里的高手们,通常都是使用直接修改exe的方式来增加/修改/减少功能的,就我亲身实践来看,不太能够理解,为什么没有人试图使用外挂dll的方式来对exe进行扩充呢?外挂dll以后,扩充功能相对要比用汇编直接写,方便多了吧……
2. 我逛了好几遍论坛,可能是小弟眼拙,竟没有找到任何一篇有关于exe是如何加载/读取/执行剧本指令的文章。在剧本指令的添加/修改方向,小弟毫无头绪,不知各位高手能否指点一二?
3. ollydbg也用过两回,但是至今方是第一次用它来正式地去crack/修改一个程序。除了佩服前人的功力以外,我在巨大的exe面前有点迷茫。各位是通过什么手段,去把一个个功能定位到一个函数地址的呢?有什么好用的搜索/跳转/自动断点类似的功能么?
以上,希望能够早日理清思路,获得答复。谢谢。
2010-9-10 21:57
coarsemelody
看来我果然没什么人回答我,经过我苦心查阅ollydbg教程,个大搜索引擎通过不固定词组搜索寻求帮助后,对于问题三的解答如下:
用来定为一个指定功能函数有一个很有效的办法:内存访问和内存写入断点,在内存窗口按Ctrl+G到指定地址后,对指定地址点右键,选择断点,再选择内存写入/访问,就可以在程序访问/写入该内存的时候,自动进入中断。极其方便。
例如,我要锁定经验值永远为零。
用我原先的本办法找到攻击函数入口,然后一个个函数定位,我用了好久定位到了战斗后绘制人物数据面板的函数,但是花了很大力气都无法锁定经验值。
但是用内存写入的话,只要根据论坛内已有文献中记载的内存地址:4A1B68 + x *4H +2d 来推断到指定地址,做写入中断,再做任何增加经验的操作,马上定位到指定地址:004089B6。把这一行代码后面的DL寄存器的数值置为0.于是经验就被永远锁定住了
2010-9-11 08:05
wysjbc
1、我也不知道= =
2、好像岱赢的帖子里有。在置顶里。
3、OB可以查找指令和地址。
2010-9-13 10:21
coarsemelody
多谢楼上,我终于在岱赢的帖子第二页的某一个小角落翻到了剧本指令解析:hz1026:
另外,继续琢磨为啥不用外挂dll……
页:
[1]
Powered by Discuz! Archiver 5.0.0
© 2001-2006 Comsenz Inc.