资源描述:
《一个禁止在模拟器运行游戏的解决方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、大D在和谐游戏研究室发了个游戏,本身收费很容易破解,用HALO就可以搞定了,但游戏不能在模拟器运行,开头动画完毕后提示请使用手机运行游戏.然后游戏就不动了,如果是手机会提示按任意键继续.如图: 在HALO里搜索"请使用手机"这个关键词,得到结果在g类的b方法里,我用DJ反编译了源代码,其它没有什么特别.有一句Runtime.getRuntime().totalMemory(),比较特别以前从没见过,到GOOGLE查了下,这句是用来得到当前JAVA虚拟机正在使用的内存大小,那就很清楚了,如果正在使用的内存大小大于用来对比的的内存,也就是6M,那就不是手机,因为手机上
2、JVM的内存只有几十K,百K或1-2M,没有太大的,因为J2ME本来就是为小内存掌上设备设计的.把思想定位在这里了,因为这没办法用HALO的字节码来讲清楚,只能用JAVA代码来讲,大家见谅,这只是个思路,看代码.这是q方法的代码:privatevoidq(Graphicsg1) { if(bh==0) a(0,g1); if(bi==99) { inti1=o.F-p.c; intj1=(o.G-p.d)+42; o.p.a(o.c,g1,i1,
3、j1); o.o.a(o.c+20,g1,i1,j1); return; } bg.a(bi,g1,120,160); if(p.p==99) { if(Runtime.getRuntime().totalMemory()>>20>6L) { if(w%4<2) game.util.a.a(g1,"u8BF7u4F7Fu7528u624Bu673Au624Du8
4、0FDu7EE7u7EEDu6E38u620F",120,278,65,0,0xffffff); else game.util.a.a(g1,"u8BF7u4F7Fu7528u624Bu673Au624Du80FDu7EE7u7EEDu6E38u620F",120,278,65,0,0xffff00); }else if(w%4<2) game.util.a.a(g1,"u4EFBu610Fu952
5、Eu7EE7u7EED",120,278,65,0,0xffffff); else game.util.a.a(g1,"u4EFBu610Fu952Eu7EE7u7EED",120,278,65,0,0xffff00); if(w<120) { w++; return; } w=0; } }看了下代码,追了几个类手发现 bg.a(bi,g1,120,16
6、0);这句是用来画一骑当千那个动画图片的而if(Runtime.getRuntime().totalMemory()>>20>6L) { if(w%4<2) game.util.a.a(g1,"u8BF7u4F7Fu7528u624Bu673Au624Du80FDu7EE7u7EEDu6E38u620F",120,278,65,0,0xffffff); else game.util.a.a(g1,
7、"u8BF7u4F7Fu7528u624Bu673Au624Du80FDu7EE7u7EEDu6E38u620F",120,278,65,0,0xffff00); }else if(w%4<2) game.util.a.a(g1,"u4EFBu610Fu952Eu7EE7u7EED",120,278,65,0,0xffffff); else game.util.a.a(g1,"u4EFBu610Fu952Eu7
8、EE7u