安卓逆向进阶教程第二集

计算机软件开发 2024-9-25 13:17:49 29 0 来自 中国
前言:

各位同砚各人好,有段时间没有给各位更新文章,具体多久我也不清楚,本日给各人来讲一下安卓逆向进阶教程,那么废话不多说我们正式开始 。
结果图


2.png 我们检察下面一段代码

package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    private static final String TAG = "-----MainActivity-----";    private TextView   textView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView.setText("我是徐庆哈哈哈");    }}我们看到日志中报错 报出来空指针非常了,那是由于我们的textview 没有初始化导致的   ,假如说我们只有 apk的情况下怎样去修复这个bug  本日我急教各人怎么去处置处罚 。
我们先把有报错的工程打包一下

3.png
4.png 我们把这个apk反编译一下


5.png
我们找到报错的Java代码对应的smali 文件

7.png
我们在上面的代码内里加上textview 初始化

textView=findViewById(R.id.textview);textView.setText("我是徐庆哈哈哈");我再将这个工程重新打包 ,


9.png 我们可以观察我们更新后的apk反编译解包出来的mainactivity.smali 文件代码

我们在对比没有修复错误之前代码

我们把oncreate 拿部门 smali 直接复制已往复制 覆盖



我们如今重新回编译我们的代码
13.png
14.png
我们在有报错的反编译目次的dist目次下面找到找到了重新编译的apk 我们重新署名 然后安装


我们看到模拟器内里app没有再瓦解了

为什么要逆向操纵

很多时间我们并不肯定能拿到源代码,由于我公司是做游戏 我是做手游SDK  我必要将本身的代码打包成aar然后给到 研发的技能举行对接(简化来讲就是我们只负责整个游戏开辟的此中的一部门)这个时间假如我们代码有标题 我们是不是通常做法是打包一个新的aar 给到接入方 。如许不但浪费时间 而且在关键时候还会出标题
尚有一种方式

那就是我们可以直接同名文件覆盖 实在我们刚才的·mainactivity 的代码根本都是千篇划一的但是差异的是修复bug的代码内里的多了一行 实在我们细致想一下 我们将apk反编译之后mainactivity.smali 这个个文件也是雷同的 只是内里的方法体内里有差异我们只必要将新的覆盖就旧的就可以 修复乐成了。这里我就不睁开讲了。原理差不多
末了总结

回到开始话题,为什么教安卓逆向的知识,那是由于在很多的时间我们并没有办法拿到源代码的情况下 我们能通太过析报错 来处置处罚掉一些棘手的BUG  如许就可以神不知鬼不觉的 处置处罚好那些标题 为工资淘汰丧失也可以然我们的项目可以或许在最短时间正常运作。末了渴望我的文章能资助到各位办理标题 ,以后我还会贡献更多有用的代码分享给各人。各位同砚假如以为文章还不错 ,贫困给关注和star,小弟在这里谢过啦
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 18:29, Processed in 0.153094 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表