zoukankan      html  css  js  c++  java
  • android加固系列—4.加固前先学会破解,无源码调试apk

    【版权所有,转载请注明出处。出处:http://www.cnblogs.com/joey-hua/p/5138585.html】

    项目关键java代码为,将tv设置为从jni读取的字符串,这里的破解内容是直接从apk动态调试修改最终显示在tv里的字符内容

    1.工具介绍

    Apktool,反编译源码用

    Android studio+smalidea插件,动态调试用

    2.准备工作

    A.配置插件

    下载插件smalidea,地址https://bitbucket.org/JesusFreke/smali/downloads

    这个

    下载完成后,打开android studioSettings | Plugins,点击选中下载好的zip压缩包。并apply

    此步骤的目的是让android studio能识别smali代码,并能正常下断点。

    B.反编译apk

    下载apktool并反编译apk

     

    3.动态调试

    首先在android studio新建一个项目,然后把刚才反编译的smali源码

     

    全部拷到项目的app | src | main | java下,把这个目录下之前的全部删除。

     

    在MainActivity$1文件的这里下个断点,如下图

     

    接下来先以debug模式启动程序,注意,是在手机上启动。

    如果你手机上有这些选项,设置 开发者选项 选择调试应用(选择crackme等待调试器(勾选),

    然后就可以直接点击程序图标,会出现Waiting For Debugger对话框。

    如果手机上没有这些选项,可以用adb命令的方式启动,先从反编译的androidmanifest.xml中找到对应的包名com.example.crackme和主activityMainActivity。然后cmd窗口输入

    adb shell am start -D -n com.example.crackme/.MainActivity

     

    手机上出现Waiting For Debugger对话框。

    这时打开as,大概等待两三秒就会出现

     

    然后再点击as的Run | Edit Configurations(注意不是DDMS的run),新建一个Remote并起码假设crack,填写端口为上图的com.example.crackme对应的端口8700,选择source using module’s classpath为我们之前创建的项目,点击OK

    现在终于可以开始调试了,点击Run | Debug ‘crack’,注意一定要关闭其他IDE以防止端口占用,否则会出现类似下面的错误

     

    程序已经调试起来了,因为我们设断点的地方需要先点击一下按钮“检测是否被crack”,停在了断点处

     

    这就和java断点调试差不多了,可以watch寄存器v0,v1,v2等,这里v1接收的是从jni层返回的字符串

    这里我们只需要把最后程序界面的文字显示成huaxiaozhou就可以了,找到textView设置的从jni层返回的字符串

     

    mTransformed右键Set Value,在双引号内输入huaxiaozhou并敲回车键,会出现等待框

     

    然后此变量的值就变了,这时候点击Resumestop

     

    手机界面上就显示huaxiaozhou了。

    一个码农的日常 

    crackme项目地址

    smalidea地址

  • 相关阅读:
    SQL 语法总结
    终于开始用github了
    前端开发第一阶段总结
    windows系统快捷操作の高级篇
    windows系统快捷操作の进阶篇
    windows系统快捷操作の基础篇
    安装使用ubuntu问题汇总
    十进制转任意进制
    任意进制转10进制
    爬取妹子图(requests + BeautifulSoup)
  • 原文地址:https://www.cnblogs.com/joey-hua/p/5138585.html
Copyright © 2011-2022 走看看