吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11554|回复: 10
收起左侧

[Android 分享] 安卓反编译揭秘(爱加密系列教程八)

  [复制链接]
Dlan 发表于 2014-6-5 15:01

程序员应该学习的签名破解


我们以“XXXX管家”为例,该apk使用了签名保护。我们对apk二次打包后,程序无法运行。原因是程序运行时会获取当前应用签名和官方签名进行对比。如果发现不一致就会终止程序


下面我们对签名保护进行破解

首先我们需要用到的工具是APK改之理。百度云盘下载:http://pan.baidu.com/share/link?shareid=164149&uk=3291471913#dir/path=%2Fmysoft%2Fapkide


点击”项目”->”打开apk”,反编译apk。



获取应用签名的java代码是:


[Asm] 纯文本查看 复制代码
PackageInfo packageInfo = getPackageManager().getPackageInfo(
                    "xx.xxx.xx", PackageManager.GET_SIGNATURES);
Signature[] signs = packageInfo.signatures;


其中“Signature” 对应的smali代码是

[Asm] 纯文本查看 复制代码
“Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature”
  


我们在改之理


搜索“Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature”




有两个文件用到了签名。首先看下ct.smali



发现这个S(Ljava/lang/String;) 是获取签名的方法。Ctrl+F搜索下“->s(”,看谁调用了s这个方法。搜索后定位到了 gy()方法。返回值是布尔型。



该方法 491行 查询了当前apk的签名,并保存在了v0寄存器里



500 行,获取了保存的官方签名,并保存在了v1寄存器里



579行,判断v0和v1是否相等。返回值保存在了v0寄存器里

583行,返回了v0



通过分析我们发现这个gy()方法,就是判断签名的地方。我们只需要修改下让该方法返回真,就能突破签名保护。


在581行,强制返回值v0为真



保存,重新编译运行。程序可以正常打开了。


本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

经典 发表于 2014-8-30 22:45
来学习下如何逆向分析
yeelnn 发表于 2014-6-5 15:07
北风 发表于 2014-6-5 15:08
shabi1hao 发表于 2014-6-5 15:09
学习了,感谢高手
syrmb 发表于 2014-6-12 21:41
大神 有木有搞过网易新闻手机客户端登录算法
小酷love 发表于 2014-6-13 11:38
不错  这个看起来思路比较清晰,感谢分享,希望发更多教程
头像被屏蔽
yyz219 发表于 2014-6-15 11:30
提示: 作者被禁止或删除 内容自动屏蔽
mokai 发表于 2014-6-21 09:45
最新版本app的反编译出来老是报错了
qilei1102 发表于 2014-8-1 22:18
为什么我搜索不会出现8s 呢 ?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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