标题:
OB中如何选择代码跳转起始位置?
[打印本页]
作者:
武骧金星
时间:
2010-2-11 05:06
标题:
OB中如何选择代码跳转起始位置?
在EXE修改中经常需要将代码写在空白处,因此就需要有一条跳转命令。
比如说,GODTYPE大人在
http://www.xycq.net/forum/viewthread.php?tid=194501
中提到先手攻击的代码,一开始的跳转位置是:
0043AC2F >-E9 D4200500 JMP 0048CD08
雪芸郡主在
http://www.xycq.net/forum/thread-82183-1-2.html
中提到主动连击的代码,在将3A设置为空属性后,一开始的跳转位置是:
00405D15 E9 B9000800 JMP 00485DD3
虽然我知道跳转目标位置(0048CD08,00485DD3)都是空白,可以添加代码,但是却不明白是如何选择跳转起始位置,也就是不明白为什么在这个位置写代码……
能不能请前辈指教一下?谢谢。
作者:
godtype
时间:
2010-2-11 08:07
因为跳转出来的位置没有其他函数使用,可以随心所欲。
至于如何选择,经验问题,多改就会了。主要是找一大段连续的00,其次是找90(NOP)或者CC(INT3),其中用90出错的可能性会比较大,要看前后关系,CC的话,连续量不多。
如果第一个区段的空白位置确实不够用,可以考虑许子将教学的主代码和文字代码,其中主代码从00433359开始(结束点自己查),在不用教学的前提下,有相当多的空白位置。
除此之外就是扩展EXE和精简原来的函数,不过都要有一定的能力,参考一下其他帖,不详细说了,注意扩展EXE会影响对操作系统的兼容性(这个是我问别人才知道的)。
作者:
武骧金星
时间:
2010-2-11 10:42
啊,我的意思不是这样的……
比如说先手攻击的跳转是:0043AC2F >-E9 D4200500 JMP 0048CD08
在原版EKD5.EXE中,0043AC2F处的代码为:
0043AC2F 8A45 F8 MOV AL,BYTE PTR SS:[EBP-8]
0043AC32 50 PUSH EAX
0043AC33 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
我是不明白为什么认为这三行代码是无关紧要,可以覆盖的……
作者:
godtype
时间:
2010-2-11 10:52
0048CD34 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0048CD37 50 PUSH EAX
0048CD38 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
0048CD3B -E9 F6DEFAFF JMP 0043AC36
看清楚一点,已经在后面补回来了,只不过将MOV AL,BYTE PTR SS:[EBP-8]改成了 MOV EAX,DWORD PTR SS:[EBP-8],不影响。
作者:
武骧金星
时间:
2010-2-11 10:58
哦,非常感谢,我确实没有特别仔细看代码……
果然还是能力不足哇,吃个智力果好了……
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/)
Powered by Discuz! 5.0.0