sun博客

记录点滴!

idea的插件java2smali测试只能转成class文件,不知道怎么回事。

于是手动转。核心在于,把核心代码写好后,弄个文件夹,转成smali文件后再参考逆向出来的smali文件修补,把调用方法改掉。在idea中打开生成的smali文件,可按关键词包名”Lcom/”进行搜索,一一修补。尽量不要用com,不然到处是,可用gov或edu,biz这样的少用的包名。

其实直接按文件的包名修补最简单,这样生成的smali文件不用再改包名呢。

javac com/ximalaya/ting/android/host/manager/request/CommonRequestM.java

java -jar D:\app\decompile\dx.jar --dex --output=Test.dex com/ximalaya/ting/android/host/manager/request/CommonRequestM.class

java -jar D:\app\decompile\baksmali.jar Test.dex -o out -l //不加-l转成的smali文件中使用.registers,加了l就是.locals,-o out表示会在当前文件目录中生成out目录,然而不加l则可以正常运行,加l好像不能运行。

参考文档:https://github.com/izgzhen/java2smali/

java -jar apktool_2.9.3.jar -r -f d 8.0.1.3.apk -o xmly8013smali  //不解资源文件
java -jar apktool_2.9.3.jar d out_old.apk -o out_old //全解

java -jar apktool_2.6.0.jar b out_old -o out.apk //回apk

java -jar apktool_2.9.3.jar b D:\project\android\xmly\xmly32603smalipojie -o  D:\project\android\xmly\xmpojie.apk

D:\app\decompile\zipalign.exe -f 4 xmpojie.apk xmpojiealign.apk //对齐

Java.perform(function () {
//静态属性修改
let personClazz = Java.use(“com.example.hookdemo.Person”);
console.log(“值:” + personClazz.age.value)//访问静态字段
console.log(“值:” + personClazz.print.value)//访问与方法同名的字段需要加下划线

//动态属性修改
Java.choose("com.example.hookdemo.Person", {
    onMatch: function (instance) {
        instance.name.value="被修改的name"
        console.log(instance.name.value)
    }, onComplete: function () {
        console.log("end")
    }
})

})

发表评论

邮箱地址不会被公开。 必填项已用*标注