【安全与逆向】- 基础篇

作者: 拔萝卜占坑 | 来源:发表于2020-01-18 13:48 被阅读0次

前言

这是“逆向工程”系列文章的开篇,后面会逐渐往深的方面讲解,很多东西当时会了,过一段时间就忘了,又去网上找,很麻烦,而且当时遇到的问题,不一定能找到,所以打算把它写下来。

简介

逆向工程做得好,就是Android里得黑科技,反编译别人发布的应用,找到里面的蛛丝马迹,然后修改成自己想要的样子,简直叼咋天。不过随着开发者不断对应用安全性的提高,现在想要做逆向工程也越来月难了。

学习逆向工程除了可以破解别人的应用,也可以提高自己在安全方面的意识。比如,现在很多开发者都会把敏感的信息或者逻辑做在so层,因为反编译so难度更高,技术难度更大。虽然如此,我们还是可以反编译so,查看里面的代码,通过so动态调试了解so层的执行逻辑等等。如果我们学会了这些,那么便可以找到防止so代码被很直观的查看和阻止开发者的动态调试等等。

说明

这篇文章主要讲解“逆向工程”基本的东西,百度一下就很多,所以会简要讲解。

工具

百度网盘: 逆向工具

  • ApkTool助手
    集成了应用反编译,签名,字节对齐等功能。本质也是将命令行操作的步骤集成到可视化工具里,降低逆向难度。
    apkstudio
    Android-Crack-Tool

  • jd-gui
    查看jar包可视化工具,后面讲解有那些功能。百度自行下载.

  • java2smali
    将java文件编译成smali文件,要分析smali文件需要了解smali语法,smali更加接近底层操作的指令。有些bug如果java层看不出,就可以借助smali文件分析。

  • AXMLPrinter2
    静态分析工具,后面讲解用法。

  • Apktool
    Apk逆向,重新打包等工具包。官网

逆向

工具准备好了,就可以开始逆向了,我拿自己公司的App进行逆向学习。如果应用加固过,用这种方式是不行的,必须先脱壳。

  • 直接用Apktool反编译Apk
    apktool d testapp.apk
    或者
    apktool -f [待反编译的apk] -o [反编译之后存放文件夹] 
    apktool  d -f  test.apk -o test 
    
    通过该命令,可以将Apk中的java文件反编译成smali文件,如果不懂smali语法的人,是很难看懂的,所以我们需要把Apk反编译成java文件的形式。
  • 解压Apk
    Apk其实就是一个Zip压缩包,将.apk改成.zip,然后解压。mac下直接点击.zip文件进行解压会报操作不被允许,你需要在命令行执行解压命令:
    执行前检查是否安装了zip解压软件。
    unzip medlinker.zip
    或者执行
    unzip testapp.apk
    
    为了解决65k的限制,解压后会有多个.dex文件,这里我就那其中一个进行逆向。
  • 生成jar
    执行命令
    ./apktool/dex2jar-0.0.9.15/d2j-dex2jar.sh classes3.dex ./dex
    
    如果这个过程报错,很可能是下载的工具有问题,之前也遇到过这样的情况。如果执行成功,将生成一个jar文件
  • jd-gui
    查看jar文件


    屏幕快照 2020-01-18 上午11.34.48.png

    这样你就可以查看java文件的内容了,但是现在很多App都是混淆过的,也不好分析里面的逻辑。

  • 查看AndroidManifest.xml
    通过直接解压Apk得到的AndroidManifest.xml文件,是不能直观看到里面的内容的,这时候就需要用到AXMLPrinter2
    java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt
    
    然后可以直接查看 AndroidManifest.txt
  • 解码jar
    ./apktool/apktool d classes3-dex2jar.jar
    
  • 控制文件的命名方式和存储方式
    apktool if framework-res.apk
    

具体用法参考Apktool

重新打包

通过反编译dex方式是不能够重新打包的,所以需要用 apktool d testapp.apk来得到能够重新打包的反编译文件。然而通过这种方式得到的是smali文件,采用的是unicode编码,所以我们先在class文件找到需要修改的地方,得到相应的unicode,找到同名文件,然后搜索,当然,如果你能看懂逻辑,也可以直接修改。

  • 步骤1
    //apktool -f [待反编译的apk] -o [反编译之后存放文件夹]
    apktool d -f test.apk -o test
  • 步骤2:
    修改源文件
  • 步骤3:
    重新打包,dist文件内就是我们需要的apk。
    apktool b dist
    
  • 步骤4:
    重新签名
    jarsigner  -verbose -keystore coolapk.keystore -signedjar base-signed.apk base.apk coolapk
     或者
    ./apksigner sign --ks medlinker.keystore --ks-key-alias medlinker --ks-pass pass:medlinker --key-pass pass:medlinker --out signed.apk un.apk
    
  • 步骤5
    字节对齐
     zipalign -v 4 source.apk destination.apk
    
    检查是否对齐
     zipalign -c -v 4 application.apk
    
  • 其它命令参数
    参考Apktool

相关文章

  • 【安全与逆向】- 基础篇

    前言 这是“逆向工程”系列文章的开篇,后面会逐渐往深的方面讲解,很多东西当时会了,过一段时间就忘了,又去网上找,很...

  • iOS逆向与安全:基础篇

    前言 从本篇文章开始,笔者会整理iOS逆向相关的笔记。作为一位新人,希望通过整理笔记能够更好的理解和掌握知识。作为...

  • 无须越狱、自动集成、只需要一个砸壳的应用---MonkeyDev

    《iOS应用逆向与安全》 上线啦!!! 购买地址: 天猫: iOS应用逆向与安全 京东: iOS应用逆向与安全 ...

  • Mybatis 基础介绍与逆向工程的构建

    Mybatis 基础介绍与逆向工程的构建 Mybatis系列:Mybatis 基础介绍与逆向工程的构建 :http...

  • Android 大牛技术博客

    1、移动安全与逆向、JavaWeb、Android技术

  • 移动安全 | 逆向基础

    01 编译简介 在学习逆向之前,我觉得很有必要了解一下编译原理。编译是将源代码转换成目标代码的过程及动作,通常是将...

  • android Unity3D 游戏修改基础篇

    视频里的东西,整理成文章, Unity3D逆向系列(基础)大纲 基础介绍篇 1.unity逆向环境搭建 1..Ne...

  • 顶级黑客标配图书

    逆向工程基础 + Android + iOS + Web应用,安全类天团配置,给你最好的安全指导! 1、有趣的二进...

  • iOS汇编

    iOS逆向之旅(基础篇) — 汇编(一)— 汇编基础[https://www.jianshu.com/p/19a2...

  • iOS逆向目录

    越狱最新进展 一.逆向基础 iOS逆向基础01-越狱iOS逆向基础02-编译&调试iOS逆向基础03-符号表iOS...

网友评论

    本文标题:【安全与逆向】- 基础篇

    本文链接:https://www.haomeiwen.com/subject/fwkkzctx.html