12345下一页
查看: 49|回复: 48

[相关教程] smali修改实操:从改返回值到回编译重签名

[复制链接]

96

主题

5

回帖

951

积分

UID
2
贡献
9 点
钻石
7 个
C币
993 个
发表于 2026-6-27 21:34:49 | 显示全部楼层 |阅读模式
逆向到最后绕不开改代码——去掉广告、绕过签名校验、改接口地址,都得改 smali。

一、smali 是什么
smali 是 Dalvik 字节码的人类可读形式。apktool 反编译后,每个 .class 对应一个 .smali 文件。它类似汇编,但比汇编好读。

基本语法:
  1. # 定义方法
  2. .method public encrypt(Ljava/lang/String;)Ljava/lang/String;
  3.     .registers 3  # 使用的寄存器数
  4.     # 寄存器:v0,v1,v2... 局部变量;p0,p1... 参数(this是p0)
  5.    
  6.     const-string v0, "AES"  # 把字符串"AES"加载到v0
  7.     invoke-static {v0}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;
  8.     move-result-object v1  # 把返回值存到v1
  9.    
  10.     return-object v1  # 返回v1
  11. .end method
复制代码

二、常见修改场景


  • 去掉签名校验:找到校验方法,直接让它返回 true
  • 去掉广告:找到加载广告的代码,注释掉调用
  • 改接口地址:找到 API URL,const-string 改成你的
  • 绕过 root 检测:让检测方法返回 false


三、实际操作:让方法直接返回 true
原始代码:
  1. .method public isVip()Z
  2.     .registers 2
  3.     # 一堆校验逻辑...
  4.     const/4 v0, 0x0
  5.     return v0
  6. .end method
复制代码

改成:
  1. .method public isVip()Z
  2.     .registers 1
  3.     const/4 v0, 0x1
  4.     return v0
  5. .end method
复制代码
registers 减到 1(只需要一个寄存器),直接返回 1(true)。中间的校验逻辑全部删掉。

四、回编译和签名
  1. # 回编译
  2. apktool b output_dir -o modified.apk
  3. # 对齐
  4. zipalign -v 4 modified.apk aligned.apk
  5. # 签名(用 debug keystore)
  6. jarsigner -keystore debug.keystore -storepass android -keypass android aligned.apk androiddebugkey
  7. # 或者用 apksigner(推荐)
  8. apksigner sign --ks debug.keystore --ks-pass pass:android aligned.apk
复制代码

五、踩坑经验

  • 改完 smali 一定检查寄存器数量够不够,不够会崩
  • 如果 App 有加固(壳),先脱壳再改 smali,否则你看到的 smali 是壳的
  • 修改后安装如果闪退,看 logcat 报什么错,一般是寄存器或类型不对
  • 别贪多,一次改一个方法,改完测一次,出问题好定位




smali 修改的核心:理解寄存器模型,能看懂 invoke/move-return 这几个指令,大部分修改就是改返回值或注释掉调用。看着像汇编其实逻辑很简单。
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
回复

使用道具 举报

0

主题

372

回帖

372

积分

UID
127378
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-6-28 17:42:01 | 显示全部楼层
我这边环境是Mac,有些步骤要调整,回头补个差异说明。
回复

使用道具 举报

0

主题

365

回帖

55

积分

UID
538880
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-6-28 19:21:12 | 显示全部楼层
收藏了,最近正好要搞这块,省了不少翻文档的时间。
回复

使用道具 举报

0

主题

366

回帖

61

积分

UID
172788
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-6-28 22:39:34 | 显示全部楼层
我用的另一条路线,效果差不多,但工具链更轻一些,回头整理下发出来。
回复

使用道具 举报

0

主题

361

回帖

0

积分

UID
147732
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-6-29 03:37:07 | 显示全部楼层
照着试了一下,第一遍没成功,发现是权限问题,建议楼主补充个提示。
回复

使用道具 举报

0

主题

362

回帖

37

积分

UID
662206
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-6-29 10:13:51 | 显示全部楼层
感谢,正需要这个,之前找的资料都太老了。
回复

使用道具 举报

0

主题

370

回帖

34

积分

UID
174608
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-6-29 18:29:47 | 显示全部楼层
同求后续,想知道绕过之后怎么稳定保持,重签名这块一直搞不定。
回复

使用道具 举报

0

主题

385

回帖

41

积分

UID
404479
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-6-30 04:24:54 | 显示全部楼层
这个思路让我想到另一个场景,回头试试能不能套用。
回复

使用道具 举报

0

主题

386

回帖

0

积分

UID
944652
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-6-30 15:59:12 | 显示全部楼层
同意楼主的判断,现在加固手段越来越多,纯手工成本太高了。
回复

使用道具 举报

0

主题

393

回帖

0

积分

UID
778685
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-7-1 05:12:41 | 显示全部楼层
这个技术本身是中性工具,关键看用途,楼主的态度挺正的。
回复

使用道具 举报

温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
12345下一页
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ客服返回顶部