大D在和谐游戏研究室发了个游戏,本身收费很容易破解,用HALO 就可以搞定了,但游戏不能在模拟器运行, 开头动画完毕后提示请使用手机运行游戏.然后游戏就不动了,如果是手机会提示按任意键继续.如图: 在HALO 里搜索"请使用手机" 这个关键词,得到结果在 g 类的 b 方法里,我用 DJ 反编译了源代码,其它没 有什么特别.有一句 Runtime.getRuntime().totalMemory(),比较特别以前从没见过,到GOOGLE 查了下,这句 是用来得到当前 JAVA 虚拟机正在使用的内存大小,那就很清楚了,如果正在使用的内存大小大于用来对比 的的内存,也就是 6M,那就不是手机,因为手机上 JVM 的内存只有几十 K,百K或1-2M,没有太大的,因为 J2ME 本来就是为小内存掌上设备设计的.把思想定位在这里了,因为这没办法用 HALO 的字节码来讲清楚, 只能用 JAVA 代码来讲,大家见谅,这只是个思路,看代码. 这是 q 方法的代码: private void q(Graphics g1) { if(bh == 0) a(0, g1); if(bi == 99) { int i1 = o.F - p.c; int j1 = (o.G - p.d) + 42; o.p.a(o.c, g1, i1, 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