zoukankan      html  css  js  c++  java
  • 教我兄弟学Android逆向04 动态调试smali代码

    上一篇《教我兄弟学逆向03 破解第一个Android游戏》我带你用另一种方式破解了切水果游戏 我布置的课后作业你也完成了 并且自己又独立破解了另外几款游戏  很不错 在这里表扬一下-威 ! 希望其他同学都能向威同学学习  努力提高自己的逆向技术!   

    要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学!    --致选择

    在开始本节课之前我有个问题 为什么要学习动态调试smali 也就是为什么要学习本节课?

    答: 因为我在招聘网站上面看到很多招逆向的公司都要求要会动态调试smali代码 因为《教我兄弟学逆向》系列课程就是为找工作而生的 并且有些东西通过静态分析是分析不出来的 要动静结合分析出来的东西才能更加全面。

    那么本节课要教你的是用AndroidStudio动态调试smali 下面开始今天的教程

    既然这节课我要教你的是用AndroidStudio动态调试smali 那么在开始动态调试smali之前 首先要把要调试的apk反编译成smali文件然后导入到用AndroidStudio中 对不对?
    那么把怎么把这个apk反编译成smali文件呢?

    你回答:我以前都是直接把apk拉到AndroidKiller这个软件中 然后AndroidKiller自动就会把apk反编译成smali文件了

    回答正确 可以啊兄弟! 用现在流行的一句话说 给你打call !

    那么我现在给你演示这种方式

    一.用AndroidKiller把apk反编译成smali文件

    apk链接:https://pan.baidu.com/s/1smNIrST 密码:uzsa

    1. 首先把apk拉到AndroidKiller中 点工程管理器 点smali目录右键 打开方式-打开文件路径

    <ignore_js_op>

    2.在E盘新建一个jwx02文件夹 然后把打开文件路径目录里的smali文件夹复制到E盘并改名为src 然后就可以用AndroidStudio导入src了

    <ignore_js_op>
    二  要用AndroidStudio动态调试smali代码 首先要安装ideasmali插件
    1.打开AndroidStudio
    2. 安装ideasmali插件,File->Settings->Plugins,下载安装ideasmali插件。

    ideasmali下载链接:
    链接:https://pan.baidu.com/s/1htl26qS 密码:0pre

    <ignore_js_op>

    <ignore_js_op>
    三. 打开Android Device Monitor

    <ignore_js_op>

    <ignore_js_op>

    四. 找到要调试APK的包名和入口的Activity

    1.用AndroidKiller打开要调试的APK 这里是jwx02.apk

    2.记住包名hfdcxy.com.myapplication 和入口的Activity名 hfdcxy.com.myapplication.MainActivity

    <ignore_js_op>

    3.这里要注意一下 在application标签里面要有 android:debuggable="true" 这句代码,没有是不能调试apk的  现在调试的这个例子默认是有这句代码的 有的apk中没有这句代码要自行添加上

    <ignore_js_op>
    五 把自己要调试的APK安装到手机中 并用数据线连接手机 打开USB调试模式

    六 打开命令行 输入命令 adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity  对apk进行动态调试 这条命令运行后手机屏幕将会进入到调试界面(如果手机屏幕没有进入到调试界面说明USB没有连接好手机 或者USB调试模式 没有打开 或者其他原因)
    <ignore_js_op>

    七.查看Android Device Monitor 记住下图圈起来的两个值 然后把Android Device Monitor关掉(这里一定要关掉,因为它会占用8700端口 导致后面转发端口失败)

    <ignore_js_op>
    八.打开命令行窗口 输入命令 adb forward tcp:8700 jdwp:19509    转发8700 端口 (这里 jdwp是自己Android Device Monitor中要调试app的Online值 )
    <ignore_js_op>


    九. 导入jwx02文件
    1.用AndroidStudio导入jwx02
    <ignore_js_op>
    <ignore_js_op>

    <ignore_js_op>

    2.然后一路Next 最后点Finsh
    <ignore_js_op>

    十 点击Android选择Project 对之前反编译的 jwx02/src文件夹右键-->Make Directory As --->Source Root
    <ignore_js_op>

    <ignore_js_op>

    十一 配置远程调试的选项,选择Run-->Edit Configurations 并增加一个Remote调试的调试选项,端口选择:8700
    <ignore_js_op>

    <ignore_js_op>

    <ignore_js_op>

    十二 选择File-->Project Structure 配置JDK
    <ignore_js_op>

    <ignore_js_op>

    十三 在Smali中下好断点 断点的意思是程序运行到下断点的那行代码就会断下来
    <ignore_js_op>

    十四 下好断点之后Run-->Debug'smali',这里的smali是我们之前配置好的调试选项
    <ignore_js_op>

    十五 此时手机会进入程序 在手机上输入用户名和密码 点登陆 程序会断在我下的断点处
    <ignore_js_op>

    十六 在自己关心的语句前面下断点按F8执行下一步 F9运行程序 可以看到程序执行的逻辑 Watches窗口中可以点+按钮添加自己想看的寄存器的名字 就可以看到这个寄存器的值了
    <ignore_js_op>

    结束
    本节课给你讲了用Android动态调试smali代码 
    当然教程讲的并没有这么详细 破解过程中遇到不懂得自己去百度 再不懂的就来问我 学习逆向就是这样 学不会就会感觉迷茫 但是不用怕 记住多迷茫几次就都学会了 本节课的例子一定要多练习 多跟着课程做几遍 自己多下断点看程序的执行逻辑 每节课布置的课后作业一定要完成 课后作业都不做的话 那我的帖子你也不用继续跟了 学而不思则罔,思而不学则殆 ,不仅要完成还要能理解 那么本节课教程到此结束 下节课我将教你在smali中代码中插入log 。

    课后作业:
    把本节课的例子动态调试三遍 尝试在不同位置下断点 多下断点 多看寄存器的值 分析程序执行的逻辑



    下一篇 《教我兄弟学Android逆向05 在smali代码中插入log

    学习时的痛苦是暂时的 未学到的痛苦是终生的
  • 相关阅读:
    Gallery平滑移动
    HDU 4308 BFS Saving Princess claire_
    css 浏览器兼容性问题解决
    CCPlace,CCFlip*,CCToggleVisibility,CCMoveTo*,CCJumpTo*,CCScale*,CCRotate*,CCSkew*,fade,CCCardinalSp*
    存储过程和输出分辨率表菜单JSON格式字符串
    Vertica变化Local时间到GMT时间
    【codeforces】Codeforces Round #277 (Div. 2) 解读
    Android 百度地图 SDK v3.0.0 (四) 离线地图功能介绍
    计算质数-埃里克森筛法(间隔黄金武器)
    IP地址分类
  • 原文地址:https://www.cnblogs.com/grimm/p/15063573.html
Copyright © 2011-2022 走看看