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

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

被折叠的 条评论
为什么被折叠?



