反编译apk,修改登录成功

要实现的功能是,登录成功。

打开Apk反编译工具,将上一篇中生成的apk拖入其中,点击 反编译apk。

开始反编译.png

将apk使用压缩文件打开,解压出其中的dex文件,正常只有一个,分包会有多个。打开Apk反编译中的打开jadx,将dex文件拖入其中,可以看到伪码。

查看伪码.png

打开MainActivity.smali文件,发现代码稍乱,那么需要简单了解几个smali语法(这部分抄袭):

.field private isFlag:z  定义变量

.method  方法

.parameter  方法参数

.prologue  方法开始

.line 12  此方法位于第12行

invoke-super  调用父函数

const/high16  v0, 0x7fo3  把0x7fo3赋值给v0

invoke-direct  调用函数

return-void  函数返回void

.end method  函数结束

new-instance  创建实例

iput-object  对象赋值

iget-object  调用对象

invoke-static  调用静态函数

条件跳转分支:

"if-eq vA, vB, :cond_**"   如果vA等于vB则跳转到:cond_**

"if-ne vA, vB, :cond_**"   如果vA不等于vB则跳转到:cond_**

"if-lt vA, vB, :cond_**"    如果vA小于vB则跳转到:cond_**

"if-ge vA, vB, :cond_**"   如果vA大于等于vB则跳转到:cond_**

"if-gt vA, vB, :cond_**"   如果vA大于vB则跳转到:cond_**

"if-le vA, vB, :cond_**"    如果vA小于等于vB则跳转到:cond_**

"if-eqz vA, :cond_**"   如果vA等于0则跳转到:cond_**

"if-nez vA, :cond_**"   如果vA不等于0则跳转到:cond_**

"if-ltz vA, :cond_**"    如果vA小于0则跳转到:cond_**

"if-gez vA, :cond_**"   如果vA大于等于0则跳转到:cond_**

"if-gtz vA, :cond_**"   如果vA大于0则跳转到:cond_**

"if-lez vA, :cond_**"    如果vA小于等于0则跳转到:cond_**

了解这些基础语法,比对伪码看懂smali还是问题不大的。

smali讲解.png

看到这里想达到目的就有很多方法了,我这里讲解我最想说的方法。让你们知道为什么if的做法是烂做法。

只要将其中的两个if-eqz改为if-nez,那么结果就是只要不是输入的之前正确的账号密码都能登录成功。

打开Apk反编译,先配置一个签名。之后将反编译后的apk目录拖入其中,点回编译apk。

目的就达到了。

一些资源下载

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • apk是安卓工程打包的最终形式,将apk安装到手机或者模拟器上就可以使用APP。反编译apk则是将该安卓工程的源码...
    隋胖胖LoveFat阅读 66,780评论 6 56
  • 很多人写文章,喜欢把什么行业现状啊,研究现状啊什么的写了一大通,感觉好像在写毕业论文似的,我这不废话,先直接上几个...
    庞哈哈哈12138阅读 2,966评论 1 8
  • 很多疾病是因为心情或状态不好,身体的各种状态,都通过疾病这种外在的形式表现出来。只有遵从自己的内心,创造专属自己的...
    423429d90f38阅读 106评论 0 0
  • 山有峰顶,海有彼岸,漫漫长途,终有回转,余味苦涩,终有回甘,不负过往,不惧将来,活在当下,勇敢直前。
    忍神阅读 212评论 0 0
  • 倘若可以让我选择,我想我会生活在这里。 ······ 如果说每一座城市都有属于自己的颜色,...
    秦君一阅读 436评论 0 0