某博国际版去广告过so签名校验的思路

前言

每次打开某博国际版时,有 5 秒的开屏广告,不胜其烦,便萌生了去掉开屏广告的想法。

本文不会拘泥于细节,仅体现大致思路。因为随着软件的更新需要修改的位置难免发生变化,在其它软件上更是无法照搬。

本文仅供研究学习使用,请勿用于非法用途。

工具

某博国际版 - v3.1.0
dex2jar - v2.1-nightly-28
jd-gui - v1.4.2
apktool - v2.4.0
Android Killer - v1.3.1
Sublime Text
010 Editor - v8.0.0
IDA - v7.0.170914
ApkScan-PKID

dex2jar 和 jd-gui 使用教程
apktool 命令配置教程

查壳

未进行加壳,省一些事情。

dex 转换为 jar

因为 Android Killer 对多 dex 文件的支持并不很好,所以只得使用一些原始的方法。

将 apk 解压后可以看到有两个 dex 文件。
使用 dex2jar 将其转换为 jar 文件,在 jd-gui 中打开。

定位广告位置

在 Android Killer 中可以容易的看到入口为 LogoActivity .

在 LogoActivity 中找到显示广告的相关逻辑。
所以接下来的思路就是让openSinaAd()openGDTAD()的 if 语句返回 false,以绕过这两个方法,让其直接执行initMainTabActivity()方法。

反编译

apktool -r d com.***.***.apk
使用 apktool 命令反编译 apk,加 -r 是不需要处理 res.

使用 Sublime Text 打开 LogoActivity.smali ,找到刚才定位到的loginOrGlance()方法。
修改 条件判断前半部分为 0 ,使 == 1 不成立,绕过openGDTAD()方法,openSinaAd()方法同理。

保存,使用 apktool 回编译,签名,安装。
但软件启动时崩溃,想必是遇到了签名校验。

过 so 签名校验

查看日志,在 so 中getIValue方法发生了崩溃。

使用 IDA 搜索 getIValue,(可配合 Graph view 、Text view 视图),找到后 F5 查看 C 语言代码。上下查看方法调用,在找到一处签名校验的地方,在 HEX view 中修改(右键 Edit 修改,再右键 Apply changes)直接使 R0 赋值为 1(true),绕过其字符串 <= 0 判断。

在 IDA 中的修改仅仅是为了验证修改是否正确,源文件并不会改变(也可以通过一些设置使其生效)。可以定位修改位置后再利用 010 Editor 等编辑器来对源文件进行修改。

完毕后,回编译,签名,安装。
这次不崩溃了,但是输入账号密码后,弹出了“客户端没有权限”的 Toast.

定位“客户端没有权限” Toast 位置

在 Android Killer 中搜索“客户端没有权限”文本,查询到它在 string.xml 中对应资源名称为 SINA_21326,根据名称在 public.xml 中查询到它的 id 为 0x7f0f003e,转为 10 进制:2131689534,用 jd-gui 搜索十进制后在 UIManager.class 文件中找到了 Toast 显示的地方,但本地字符串并没有直接用于(进行了其它逻辑判断), Toast 显示的字符串很可能来自于服务器。再加上这段逻辑复杂,可能耗费时间较多,我放弃根据 Toast 位置反推的方法,正推直接查看登录函数。

登录函数

因为没有混淆,还是很简单的。较为怀疑的就是****Pin函数。它是 native 方法,继续使用 IDA 查看 so.

在它的调用函数中,看到了一段 hashcode 的判断。

在 HEX view 中修改,CMP 判断条件,使 == 永远为 true,令 hashcode 判断失效。

完毕后,回编译,签名,安装。
输入账号密码后,成功登录,反复关闭打开软件,启动时不再有 5 秒的广告。

这次去广告以及由此引发的过 so 签名校验的分享也就告一段落了。
谢谢大家。

后续

使用时还发现软件从后台回到前台时也会显示广告,使用开发者助手发现这个广告页是 NewSplashActivity,查找调用后发现在 ProcessMonitor 中有 Activity 生命周期的监听,定位到相关函数,将 != 改为 == 即可。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350