zoukankan      html  css  js  c++  java
  • 对安卓逆向的认识

    对安卓逆向的认识

    1,首先是为什么要安卓逆向

    因为你抓包之后,发现请求接口的时候加了token,你就要找到这个token加密的地方,你才能进行下去,

    而要找到这个token加密,你就必须要逆向,才可以,这就是逆向的意义,

    app逆向,主要讲安卓逆向,因为安卓开源,好弄,

    2,安卓逆向需要掌握什么?

    既然是安卓逆向,所以你比如要掌握安卓系统的原理,

    既然是逆向app,所以你对app的加载原理也要清楚,了解apk包,必须要知道apk的流程,原理,启动加载,你正向的都不知道,你怎么做逆向,

    安卓系统和apk都是java开发的,所以你还要掌握java

    写爬虫,不是要做到完全逆向,像安全工程师一样,我们只需要做部分逆向,找到加密的部分就行了

    3,既然你是电脑操作手机,

    你就必须要学习adb命令,这个是可以操作手机的,很方便,

    所以你要学习adb命令

    4,安卓逆向,写代码的难度是比较小的,

    难度大,是因为要分析原理,比如frida脱壳,这个其实代码很简单,十几行代码就好了,但是要懂得原理才可以,

    #####

    第一步:解决安卓手机抓包问题

    现在还有一个问题很重要就是安卓手机抓包,你想要抓包看看他请求的哪一个接口,但是你抓不到包,

    第一步就卡在这里了,所以你要先解决这个抓包的问题,才可以进行下去,

    如果不能抓包,或者抓包不能得到我们想要的东西,要看代码,那就逆向,就要反编译,可以hook,可以使用工具,可以改smali文件,

    frida是代码注入技术,为什么不讲xpose,因为这个工具是java开发的,而frida是python+js开发的,这个比较熟悉,

    后面重要使用frida开发

    第二步:解决加密问题----->反编译拿到源码

    既然你要逆向,当然是拿到源码,就是要反编译,jadx工具,我要掌握这个工具,

    apktool,也可以反编译,

    第三步,可能反编译失败----->解决脱壳问题

    你既然要修改人家的源码你就要解决app加固的问题,你要脱壳,你就要了解加固原理

    手动脱壳难度很大,需要ida工具,这都是汇编,你基础不强的话,很难搞,ida动态调试,这个知道了解就行,也会讲到,

    很多人说,做安卓逆向要回ida,但是我们做逆向不是要全部逆向,这个可以后面慢慢的精进,掌握了动态ida调试,基本算是安卓逆向的中高层次了,

    工具脱壳,一个是工具Xposed,一个就是frida了,重点就是涉及到frida,脱壳问题

    现在大部分都是工具脱壳,手动脱壳难度太大,

    第四步,脱壳之后看不懂代码----->解决反混淆问题

    既然你脱壳了,但是代码都是混淆的,你看不懂,所以你还要反混淆,这就是下一步,你要反混淆,

    脱壳不难,但是反混淆是比脱壳难的,这个要考验你看代码的能力,

    第五步,看到源码开始修改源码----->修改smali文件

    你既然要改动apk的源码,那你必须要学习smali文件,因为改java文件你要重新编译,而这个是很麻烦的,

    所以你要修改源码,还需要看懂smali文件,这个还涉及到了hook技术,这个涉及到frida,hook so文件的问题frida hook 加密位置的问题

    我们看smali文件的意义就是找到不让我们抓包的代码,然后注释掉,就可以了,类似这样的,

    为什么要修改smali文件,而不是修改java源码,因为java源码需要编译,而你编译的环境可能和别人的编译环境是不一样的,你编译出来的apk,可能安装不上,

    你要修改smali文件,就要看懂smali文件,这个考验你看代码的功力,

    第六步:解决修改源码之后的安装问题---->签名问题

    编译之后你如果要安装,那你就要解决反编译修改源码之后的签名问题,这个问题不解决,你就无法二次安装这个apk包,

    所以你要解决签名的问题,

    这个涉及到frida,hook签名位置的问题

    ####

    技术栈,就是使用frida,不再考虑Xposed,这个决定基于两点,

    1,必须要二选一,精力和时间有限,

    2,python,比java要更加的熟悉,

    就是这两个原因,

    #### 

    ####

  • 相关阅读:
    JS是单线程的吗?
    JQuery $ $.extend(),$.fn和$.fn.extend javaScript对象、DOM对象和jQuery对象及转换 工具方法(utility)
    JavaScript 操作符 变量
    WEB组件 开发 (未完成 413)
    CSS传统布局之布局模型
    JavaScript 作用域 匿名函数 模仿块级作用域(私有作用域)
    JQuery常用API 核心 效果 JQueryHTML 遍历 Event事件
    JavaScript 属性类型(数据属性 访问器属性)
    CSS居中问题:块级元素和行级元素在水平方向以及垂直方向的居中问题
    javascript 深入浅出 (未完成417)
  • 原文地址:https://www.cnblogs.com/andy0816/p/15174348.html
Copyright © 2011-2022 走看看