安卓从开发到逆向(四),smali插桩

本文介绍了如何通过Smali插桩技术来分析Android应用。首先,作者展示了如何反编译APK,寻找邀请码生成逻辑。接着,详细解释了在Smali代码中找到关键方法`checkSN`,并分析了其内部逻辑。然后,通过在`checkSN`方法中插入log代码实现插桩,当应用运行时,可以在Logcat中捕获到邀请码(MD5值)。最后,成功利用插桩信息注册账号。

smali插桩

如果仅仅用Smali来分析代码,效果其实不如用dex2jar和jd-gui更直观,毕竟看反编译的java代码要更容易一些。但Smali强大之处就是可以随心所欲的进行插桩操作。何为插桩,引用一下wiki的解释:

程序插桩,最早是由J.C. Huang 教授提出的,它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。
准备工具:
android killer,android studio,Smalidea插件,夜神模拟器,adb,check_md5-release.apk
工具下载地址:
链接:https://pan.baidu.com/s/1mHOl9y-LXnETUg3oDAKNvA
提取码:3ygd
步骤

首先开发一个简单的登录demo程序,要求输入用户名、邀请码、密码来完成账号的注册。
在这里插入图片描述

关键代码
public class MainActivity extends AppCompatActivity {
   
   
    private EditText edit_userName,edit_password;
    private EditText edit_sn;
    private Button btn_register;

    @Override
    public void onCreate(Bundle savedInstanceState) {
   
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edit_userName = findViewById(R.id.username);
        edit_sn = findViewById(R.id.invitation);
        edit_password = findViewById(R.id.password);
        btn_register = findViewById(R.id.submit);

//        匿名类
        btn_re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值