Android软件的逆向步骤:
1、反编译->静态分析(阅读反汇编代码,如果必要还需进行动态调试,找到突破口注入或直接修改反汇编代码)->动态调试->重新编译。
对抗反编译工具:
1、针对开源的反编译工具,找到处理apk文件的关键环节,如资源文件处理、dex文件校验、dex文件代码类解析等。
2、压力测试:收集大量apk文件,在反编译的出错信息中,查找反编译工具的缺陷。
腾讯应用加固检测点:
1、DEX文件保护检测
DEX文件是Android系统中在Dalvik虚拟机上可以直接运行的文件格式。 未做保护的DEX文件被反编译后,会导致源码泄漏。恶意人员通过阅读源代码了解应用结构和业务流程后,能够进行盗版、篡改、代码注入、攻击等危险行为。
2、源代码混淆检测
源代码混淆是针对代码的类名、函数名、变量名进行替换,使得代码达到普通人难以查看和理解的程度,降低业务代码逻辑暴漏风险的一种防范措施。 未经混淆的源代码一旦被恶意人员获取,同样会带来盗版、篡改、代码注入、攻击等风险。
3、so库文件保护检测
so库是通过NDK技术将应用代码用C/C++语言实现,再提供给Java层调用的一种方式。相对java来说,能够达到较高的安全性和获得较好的性能。但so库依然可以通过工具来破解。 so库文件未做保护,可能被破解,导致代码和业务逻辑的暴露。
4、病毒扫描检测
依托腾讯手机管家,对应用常见的安全项进行了检查,并进行了病毒扫描。
操作步骤
5、使用jarsigner对未签名的加固包进行签名。
建议您使用之前对APP签名时使用的keystore对加固包进行签名,避免部分应用市场检查签名时发现同一应用使用签名不一致导致无法上传到应用市场
如果之前使用eclipse进行apk的签名和导出,请参考“获取Eclipse使用的keystore”
jarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore [your_key_store_path] -signedjar [signed_apk_name] [usigned_apk_name] [your_key_store_alias]
your_key_store_path:您密钥所在位置的绝对路径
signed_apk_name:签名后安装包名称
usigned_apk_name:未签名的安装包名称
your_key_store_alias:您密钥的别名
获取Eclipse之前使用的keystore
获取keystore
在您Eclipse项目上右键,选择Export后,选择Export Android Application并下一步。location项内就是您之前使用的keystore位置,将此作为your_key_store_path。
好的文章链接:
http://www.cnblogs.com/wanyuanchun/p/4084292.html