首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

初涉静态调试-修改Smali

前言

Enmmm,还记得之前看反编译之后的结果,对于 Smali 文件,简直懵的要死。

今天,一起好好回顾下。

首先来个小 Demo

效果如下:

链接:

https://pan.baidu.com/s/1EbZsk106YLV22TgoVkbhbw

密码:f5v1

打开如下格式:

而接下来,我们重点关注 Smali 目录下的文件:

Smali 解析代码文件

Enmmm,这里还需要借助工具:Dalvik虚拟机操作码,进行辅助。

链接:

https://pan.baidu.com/s/14I63tafdQRcBkSm6UO1qaQ

密码:2w7h

首先,我们先来看前三句:

首先,我们来依次解析下所代表含义:

L 代表 Java 类型文件,也就是 MainActivity;

super 则代表父类,也就是继承自 AppCompatActivity;

source 则代表文件名称,也就是当前文件名为:MainActivity。

那么依旧这些内容,转化为 Java 代码如下:

接着,往下继续看:

Enmmm,显而易见,这里定义了三个全局变量,并且我们解析下这几行行所代表的含义:

instance fields:LZ 理解为类似作用域,表明界限;

.field private mCheckID:Landroid/widget/Button:定义一个私有变量名为 MCheckID 且类型为 Button。

那么针对这些,逆推 Java 代码如下:

而接下来,我们来看下 onCreate() 方法又被转化成了什么鬼?

显而易见,有一个名为 onCreate 并且有一个参数为 Bundle 类型,参数名为 savedInstanceState。

而其下则调用了 super,而 所代表的含义如下:

p0 代表当前,也就是 this,对应类型为 Landroid/support/v7/app/AppCompatActivity;

p1 则对应参数 onCreate(Landroid/os/Bundle;)V,这里参数依旧使用上面的 Bundle –> savedInstanceState

而 const v0, 0x7f09001b 则对应的具体类型,经过 LZ 搜索如下:

下面的

invoke-virtual ,

Lcom/hlq/apktooldemo/MainActivity;

->setContentView(I)V

解析如下:

p0 代表类型为 com/hlq/apktooldemo/MainActivity;

v0 则代表引用下面 setContentView(i) 参数对应的则是我们 MainActivity 对应的 layout 文件 id。

而这俩行,则是定义了俩个方法,分别为:

initView()V;

initEvent()V。

So,结合起来,onCreate Smali 文件转换 Java 文件如下:

而下面,继续查看 initView 方法:

而在 initEvent() 方法中,则又是如下:

而其下点击事件中关键内容解析如下:

而最后,我们简单看下 onClick 中如何处理:

由此推断出,转化为 Java 代码应该如下:

有些生涩,但是好歹翻译出来了。尴尬癌都犯了。。。生涩 ing。。。

修改 Smali 文件,使其达到我们预期效果

从文中提供 Demo 演示图,我们可以看出,当前的小程序主要功能便是,属于用户名以及校验码,验证通过进入欢迎页,否则提示错误异常。

那么,如何在我们不知道验证码的情况下,还能正常进入欢迎页面呢?

结合我们刚刚解析的 Smail 文件,以及转化后的 Java 文件,我们可以得知如下关键内容:

首先,Apk 会对用户输入进行一个非空校验,这个好办,我们随便输入点什么即可绕过;

而关键将通过 Base64 对用户输入进行校验合法性。

那么,我们可以不可以,将这块的逻辑给它逆转一下,比如,我们随便输入,使其程序校验成功,而我们真正录入正确的时候,则认为是失败的。嘿嘿嘿,有点坏哦~

说干就干,一起来修改 Smail 文件。

直接通过搜索定位到 startActivity 方法处:

那么,我们接下来只需要直接将 cond_1 前面的 if - eqz 修改为 if - nez 即可,如下所示:

这时候,再次回包:

签个名:

运行查看效果:

6 不 6?

本文到此结束~

大吉大利,晚上吃鸡~~~

欢迎各位老铁关注~不定期发布~见证你我的成长路~!!!

觉得不错,动动小手,转发让更多人看到,3Q,比心~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180725G0CSJ500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券