|
楼主 |
发表于 2011-4-29 21:37:08
|
显示全部楼层
正文——修改屏幕大小限制
那么。最后一项了,突破屏幕限制。。。
开工!
1。用ODB打开dll然后鼠标右击空白位置。。查找常量。。。参看前两幅图,指导你怎么找常量。。。(ODB查找常量01E.png ,ODB查找常量.png )
2。搜索之后会出现这样的窗口,显示所有含有1E0常量的汇编指令。参看图 ODB查找常量结果.png 
3。观看这个结果。。我们要找什么呢??参看上一章,push!
没错,还是push!push 1E0,为什么呢??
上一张就说过传参用push.
push 1E0
push 280
压栈传参给窗口创立的函数。
但是显然push是不全面的,为色很难么??我们用RMVX的都知道用默认的函数调整窗口大小的时候,如果大于640X480的话会强制限制在640X480.
C风格示意代码
-
- void resize_window(int width.int height)
- {
-     if (width>640)
-         width = 640;
-     if (height>480)
-         height = 480;
- .............省略
- }
复制代码
大家看到了吧,就是类似于这样的校验。
既然有if判断,那么一定存在 cmp的汇编指令,配合jz,jn等等的指令
那么太幸运了,在搜索结果中只有一个cmp!那么就是这个了!。
那么,以下我就以这个为例说说。。。另外参看需要改的地方.png 这个图里的是我们需要修改的东西,方法同我要讲述的内容。
4。那么我们双击cmp的搜索结果,进入这一段代码!
 
偏移量                机器码                        汇编指令 
10001BDE        81FA 80020000        cmp edx,280
10001BE4         7E 05                           jle short 10001BEB
10001BE6         BA 80020000             mov edx,280                  <====# code 1
10001BEB        81FE E0010000        cmp esi,1E0
10001BF1         7E 05                           jle short 10001BF8
10001BF3         BE E0010000            mov esi,1E0                   <====# code 2
 
code 1对应
if(width>640)
    width = 640;
 
code 2对应
if(height>480)
    height= 480;
 
那么就明白了吧,只要把这4个常量改成我们需要的数字就可以了!然后记下偏移量,参看记录.png 
5。用UE打开dll,找到偏移量。参看图片UE找到位置.png ,图片指引你。
 
6。把找到的常量改成我们需要的数字。。改法参看第一章,另外参看图片已经改的地方.png 
 
7。另外各位看官自己根据需要改的地方.png 来把其他地方都改了,每个1E0附近必然有对应的280,这是成对出现的,一个是宽,一个是高,我将这两个数改成400 300了。。记住都是16进制的,对应的10进制是1024X768.
 
终于完事了!谢幕! 
应承的事情都完成了,我终于可以华丽的转身了。
  |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|