注册

Android 逆向从入门到入yu

免责声明


本次技术分享仅用于逆向技术的交流与学习,请勿用于其他非法用途;技术是把双刃剑,请善用它。


逆向是什么、可以做什么、怎么做




  • 简单讲,就是将别人打包好的 apk 进行反编译,得到源码并分析代码逻辑,最终达成自己的目的。




  • 可以做的事:



    • 修改 smali 文件,使程序达到自己想要的效果,重新编译签名安装,如去广告、自动化操作、电商薅羊毛、单机游戏修改数值、破解付费内容、汉化、抓包等
    • 阅读源码,借鉴别人写好的技术实践
    • 破解:小组件盒子:http://www.coolapk.com/apk/io.ifte…



  • 怎么做:



    • 这是门庞杂的技术活,需要知识的广度、经验、深度
    • 需要具体问题,具体分析,有针对性的学习与探索
    • 了解打包原理、ARM、Smali汇编语言
    • 加固、脱壳
    • Xposed、Substrate、Fridad等框架
    • 加解密
    • 使用好工具## 今日分享涉及工具



  • apktool:反编译工具



    • 反编译:apktool d <apkPath> o <outputPath>
    • 重新打包:apktool b <fileDirPath> -o <apkPath>
    • 安装:brew install apktool



  • jadx:支持命令行和图形界面,支持apk、dex、jar、aar等格式的文件查看





  • apksigner:签名工具





  • Charles:抓包工具



    • http://www.charlesproxy.com/
    • Android 7 以上抓包 HTTPS ,需要手机 Root 后将证书安装到系统中
    • Android 7 以下 HTTPS 直接抓



正题





  • 正向编译



    • java -> class -> dex -> apk



  • 反向编译



    • apk -> dex -> smali -> java



  • Smali 是 Android 的 Dalvik 虚拟机所使用的一种 dex 格式的中间语言




  • 官方文档source.android.com/devices/tec…




  • code.flyleft.cn/posts/ac692…




  • 正题开始,以反编译某瓣App为例:




    • jadx 查看 Java 源码,找到想修改的代码




    • 反编译得到 smali 源码:apktool d douban.apk -o doubancode --only-main-classes




    • 修改:找到 debug 界面入口并打开




    • 将修改后的 smali 源码正向编译成 apk:apktool b doubancode -o douban_mock1.apk




    • 重签名:jarsigner -verbose -keystore keys.jks test.apk key0




    • 此时的包不能正常访问接口,因为豆瓣 API 做了签名校验,而我们的新 apk 是用了新的签名,看接口抓包




    • 怎么办呢?




    • 继续分析代码,修改网络请求中的 apikey




    • 来看看新的 apk






  • 也可以做爬虫等




启发与防范



  • 混淆
  • 加固
  • 加密
  • 运行环境监测
  • 不写敏感信息或操作到客户端
  • App 运行签名验证
  • Api 接口签名验证

One More Thing



作者:Sinyu101220157
链接:https://juejin.cn/post/7202573260659163195
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0 个评论

要回复文章请先登录注册