duangsuse::Echo
也不难, 修改 smali 代码即可
但得有个封装来帮助传输需要执行的代码
还要让引擎可以访问 Context, 这也不难 (Interpreter#set)
然后就可以随便使用里面的代码了(
明天可以试试 XD
ps: 如果用 IDEA 调试人家已经帮你实现好了
还要让引擎可以访问 Context, 这也不难 (Interpreter#set)
然后就可以随便使用里面的代码了(
明天可以试试 XD
ps: 如果用 IDEA 调试人家已经帮你实现好了
总结一下之前的调试经历, 和签名验证有关的:
额外收获是发现了 drakeet 的美化 Toast 类
是在给
> http://drakeet.me/android-advanced-proguard-and-security/
正所谓叶藏于林, 所以我们从叶子的营养来源 — libcore.so/Android API/Java API 来分析
叶子终于藏不住, 谁叫使用 Dalvik JDWP 调试起来很方便呢(逃跑 😆
结束了吗?几天过去依然没有结束
接下来对检出的几个类进行静态分析和修改, 将会使用大家最熟悉的 JaDX 和 smali 工具了
libcore.so!Java_com_drakeet_purewriter_Ww_www
libcore.so!checkSignature
libcore.so!loadSignature
com.drakeet.purewriter.tn
com.drakeet.purewriter.ts
com.drakeet.purewriter.to (possible)
com.drakeet.purewriter.aiw (possible)
com.drakeet.purewriter.agm (possible)
com.drakeet.purewriter.aiy (possible)
com.drakeet.purewriter.alf (possible)
com.drakeet.purewriter.aix (possible)
com.drakeet.purewriter.Ww
额外收获是发现了 drakeet 的美化 Toast 类
com.drakeet.purewriter.arm是在给
android.widget.Toast 下断点后发现的> http://drakeet.me/android-advanced-proguard-and-security/
正所谓叶藏于林, 所以我们从叶子的营养来源 — libcore.so/Android API/Java API 来分析
叶子终于藏不住, 谁叫使用 Dalvik JDWP 调试起来很方便呢(逃跑 😆
结束了吗?几天过去依然没有结束
接下来对检出的几个类进行静态分析和修改, 将会使用大家最熟悉的 JaDX 和 smali 工具了
最后的最后,我们还需要做的就是防止反编译者重新打包,全方位绝人之路呀,能做的就是在代码中加入签名验证,并做双向依赖。关于此我写过一个类似阿里黑匣子的东西,能够在 native 检查签名和加解密内容,后续也有计划整理开源,这里暂且就不多说了。
duangsuse::Echo
最后的最后,我们还需要做的就是防止反编译者重新打包,全方位绝人之路呀,能做的就是在代码中加入签名验证,并做双向依赖。关于此我写过一个类似阿里黑匣子的东西,能够在 native 检查签名和加解密内容,后续也有计划整理开源,这里暂且就不多说了。
事实证明
Native 验证逻辑证明: https://t.me/dsuse/3607 (Native 方法调用了
JVM 验证逻辑证明:https://t.me/dsuse/3639
对 Native 代码的依赖:https://t.me/dsuse/3090 (Java_com_drakeet_rebase_tool_JPEGs_getLocalUrl)
Native 中保存了一些加密的数据:https://t.me/dsuse/3090 (同上)
纯纯写作 的确使用了 Native(C++) 和 JVM 语言(Java/Kotlin) 编写了验证逻辑, 并且非托管代码和托管代码也互相依赖Native 验证逻辑证明: https://t.me/dsuse/3607 (Native 方法调用了
android.content.pm.PackageManager API)JVM 验证逻辑证明:https://t.me/dsuse/3639
对 Native 代码的依赖:https://t.me/dsuse/3090 (Java_com_drakeet_rebase_tool_JPEGs_getLocalUrl)
Native 中保存了一些加密的数据:https://t.me/dsuse/3090 (同上)
Telegram
duangsuse Echo
## trace thread <1> main (running suspended)
-- com.drakeet.purewriter.Ww.WwWvw()V:0
-- com.drakeet.purewriter.AboutActivity.onDestroy()V:0
-- this=Lcom/drakeet/purewriter/AboutActivity; <830059138752>
-- android.app.Activity.performDestroy()V:13…
-- com.drakeet.purewriter.Ww.WwWvw()V:0
-- com.drakeet.purewriter.AboutActivity.onDestroy()V:0
-- this=Lcom/drakeet/purewriter/AboutActivity; <830059138752>
-- android.app.Activity.performDestroy()V:13…
duangsuse::Echo
最后的最后,我们还需要做的就是防止反编译者重新打包,全方位绝人之路呀,能做的就是在代码中加入签名验证,并做双向依赖。关于此我写过一个类似阿里黑匣子的东西,能够在 native 检查签名和加解密内容,后续也有计划整理开源,这里暂且就不多说了。
不得不承认为了部分解决重打包的问题我还吃了不少苦头(
甚至手动修改 Android 二进制 AXML 文件, 手工修复无 resources 解码的 apktool 项目
不过这对我来说也是一种提升, 调试 AXMLEditor 的过程中我又看了不少代码, 这正是我缺少的东西
使用 AndBug 调试 JVM 应用的时候我也提升了自己的调试技能
甚至手动修改 Android 二进制 AXML 文件, 手工修复无 resources 解码的 apktool 项目
不过这对我来说也是一种提升, 调试 AXMLEditor 的过程中我又看了不少代码, 这正是我缺少的东西
使用 AndBug 调试 JVM 应用的时候我也提升了自己的调试技能