mao
mao
就最后编译部分需要linux,当然windows也可以,我没有环境就不适配。可以自己修改项目不调用ndk编译,只输出项目文件。
aget指令不光对int使用还有float,没法区分它处理的是int还是float,所以不处理直接把原始数据扔寄存器里,让后续指令自己区分。
这问题,可能得在解释aget指令时,自己先检测一遍数组是否越界。
又或者在处理dex时提前把数组类型区分出来,然后自己在vm里增加一条aget-float指令的解释,这样原来的aget只处理int数组(GetIntArrayRegion),新加的aget-float处理float数组(GetFloatArrayRegion)
不是最新源码编译的吧?示例里的版本在没自定义application时会修改androidManifest.xml,后面改进不再修改这个了,但没编译新的jar直接给人下载, 那个本来就是demo。
直接修改编译后的xml当时是有点问题,后面改进就不修改xml,但没跟着更新那个jar,可以用最新源码进行编译
这目录实际是两个项目,nmm-protect开发用的idea社区版,apk和dex相关处理都在这, 你只需要编译这个就行。 nmmvm那个主要是c项目用android studio,不过暂时可以不用管它。
windows下可以使用, 这个错误应该是ndk有问题. 或者你可以手动在命令行执行相关命令, dex2c下就是转换后的c项目. 也可以用as随便建个项目,把dex2c复制到src/main下,然后gradle里配置cmake, externalNativeBuild { cmake { path 'src/main/dex2c/CMakeLists.txt' } } 用as来测试, 编译
没用过fastjson,解析非native方法?应该只是简单判断访问标识。那就不动原方法,处理时生成一个私有不重名native方法,原方法调用这个native方法可以解决,具体逻辑和解决RegisterNatives问题一样。
这个异常不是源头, 日志往前翻,应该有No implementation found 这个异常,不处理对应的类就行了. 应该是类加载相关问题,暂时没法准确知道原因,只能跳过出错的类