Android笔记 (9): 反编译 - 代码注入

关于反编译系列,其实网络上有很多总结的很好的,反编译一类的教程,我也仅仅是从别人的博客里面了解到部分粗浅的知识而已。个人感觉学习反编译最大的作用是去了解别人的实现过程,所以查看源代码是个人认为比较重要的,而代码注入这一部分就主要是为了玩儿了。
这一篇我写不写压根不重要,网上总结的好的文章多得是,毕竟这是有攻击性的行为,所以我的目标只是记录一些自己接触过的点、修改apk的思路,以及修改一下前面的成果VolleyDemo.apk,所以比较简单。

其实,真相是这样的:难的我并不会啊!!!哈~哈~哈!

好了,进入正题。既然说到apk的反编译,自然就会联想到smali这个词,百度上也有很多相关知识,其实大家都知道还有一种方法也是学习smali很高效的途径:自己写一个简单的应用,可以只有一个Activity,只做简单的功能,然后反编译,对比源码来学习。

基本语法我这里就不给大家解释了,现在先来回顾一下目前VolleyDemo的主要功能有哪些。

原版VolleyDemo.apk主要功能

  • 进入应用后向ip.taobao.com发出请求,获取ip地址信息。

    ip参数为不合法的ip地址

  • 网络请求结果(原始数据),以log形式输出。

D/demo    (16032): {"code":1,"data":"invaild ip."}
  • 解析结果,弹出Toast+Dialog。


    数据错误提示
  • 点击“我知道了”,验证HTTPS支持。


    HTTPS请求访问结果

目标

现在我们通过代码注入的方式来做以下事情:

  • 点击“我知道了”,不打开HTTPS页面,而是关闭当前Activity。
  • MessageDialog描述不准确,应改为“无效IP地址”。
  • 将IP改为合法地址。

实现过程

准备

上一篇查看源代码中有提到:

本章使用上一章节所搭建的环境和工具,同时也使用之前Volley系列的成果作为源文件。工具和源文件可到这里下载,同时也可参考上一章节进行环境配置。

同理,这里我用的也是同样的环境和素材。

注入

  • 点击“我知道了”事件
    首先,我们在不知道源代码的情况下以最简单的方式来解决问题。
    点击我知道了,看现象应该能猜出是跳转到下一个Activity,那么这个Activity叫什么名字呢?我们可以通过log查看:
    查看启动的Activity名称

    可以看到log输出为HttpsTestActivity,而且可以得到包名为com.joyin.volleydemo,同理,MainActivity的信息也一样可以获得。
    接下来查看代码中什么地方用到了HttpsTestActivity

    除了./activity/HttpsTestActivity.smali本身,就只有./activity/MainActivity$1.smali第52行用到了这个字段,我们跟进代码。

    发现52行所在的环境是一个onClick,我们删掉几行代码,再修改一点,代码没什么难度,懂一点smali的话很容易理解:
# virtual methods
.method public onClick(Landroid/view/View;)V
    .locals 4
    .param p1, "v"    # Landroid/view/View;

    .prologue
    .line 70
    iget-object v0, p0, Lcom/joyin/volleydemo/activity/MainActivity$1;->this$0:Lcom/joyin/volleydemo/activity/MainActivity;

    invoke-virtual {v0}, Lcom/joyin/volleydemo/activity/MainActivity;->finish()V

    .line 71
    return-void
.end method

此时代码已经修改好了,再次运行,弹出对话框后,点击“我知道了”就直接finish掉,大家可以自己实验一下。


回编译过程
  • 修改MessageDialog描述
    这个需求比较简单,我们先找“获取请求失败了”这个关键字,然而你会发现,除了dex文件适配到了,其余地方都找不到,这是因为当初写代码的时候,这句话不是写在资源里的,而是直接放在java代码里,而smali中的是Unicode编码,所以要查找\u83b7\u53d6\u8bf7\u6c42\u5931\u8d25\u4e86
    找过去会发现MainActivity241行定义了该字符串:

    我们修改如下:
const-string v3, "\u65e0\u6548\u0049\u0050\u5730\u5740"

再次回编译,签名,安装:


修改内容后的对话框
  • 将IP改为合法地址
    利用前面章节中的知识点,将手机和电脑连上同一wifi,保证在同一局域网内。手机设置代理,电脑打开charles进行抓包,发现ip字段传的参数是“2dss3”:
    抓包结果

    接下来我们以同样方法找到“2dss3”(MainActivity.smali第48行),修改为:
const-string v1, "21.22.11.33"

回编译-签名-安装:

apktool b VolleyDemo/ && apksign VolleyDemo/dist/VolleyDemo.apk && adb install -r VolleyDemo/dist/VolleyDemo.apk_sign.apk
运行结果

至此,简单的代码注入已经完成。

其他

反编译系列的简单处理就写到这里了,我只记录了最简单的处理方式,但相信各位应该能很联想出怎么进行高难度的注入了,我就不点破了(我不会啊,哭)。基本技巧掌握了,改文字/图片/逻辑都可以实现。VolleyDemo没有做任何代码混淆,加密,安全验证等,仅仅是为了在这里更容易的反编译,在这里还是呼吁大家平时做项目一定要记得加固,基本的代码混淆,对dex做动态加载、验证等。相信大家都知道,我们可以使用一些免费的平台来完成这些事,省时省力,哈哈。

另:反编译的技能最好用于学习,切勿用于恶意攻击。谢谢~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 一、前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: ...
    JiangWei_App阅读 3,588评论 2 29
  • 很多人写文章,喜欢把什么行业现状啊,研究现状啊什么的写了一大通,感觉好像在写毕业论文似的,我这不废话,先直接上几个...
    庞哈哈哈12138阅读 2,876评论 1 8
  • 有些人有些事慢慢消散在记忆的长河中 可是有时还会在脑海里掀起波澜 时间是一剂良药 治愈伤痛 抚平一切 那时的无数次...
    吴小烂阅读 152评论 0 2
  • 思想录 又是一年了。岁月荏苒,唯一好处大概就是让人越活越明白的。比如最近我就想到一个问题,即人在五十岁以前是否要急...
    zqy0008008阅读 122评论 0 1