吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 27284|回复: 103
收起左侧

[Android 原创] 《新人投稿》追书神器破解手记

    [复制链接]
watchdoge 发表于 2017-4-17 14:33
0x00
作为一个web转移动端二进制方向的炒鸡萌新,android包括java以前都没有接触过,看了两周《android软件安全与逆向分析》感觉光看书也不知道到底学到了什么就打算找个目标练练手。追书神器是我用了很多年的一款看小说软件,资源很全,android和ios上都有,但是在某次更新以后就不能免费看书了。论坛里有很多关于它的破解资源,但是却没找到讲述如何破解其android版本的相关资料,可能是因为这个软件破解比较简单的原因,不过挺适合我这种新手练手的。
0x01
既然是想破解正版源的书那么先抓个包看看免费和收费的区别吧。抓包工具是burpsuit,免费的章节直接就能看到正文的内容
zhuishu-1.jpg
而收费章节会得到正文经过某种加密后的密文
zhuishu-2.jpg
这个软件每天签到会给点追书券,攒够看一章的券购买一下试试
zhuishu-3.jpg
可以看到发送请求的时候带上了token和bookId,返回一个key值,这个key就是解密前面密文的密钥了。那么从这个流程上来看,在客户端这边下手是不行的了,最核心的key是在网站后台查询token相关信息后给的。用web的手段大致浏览了下这个网站发现了后台一些组件的登陆入口也就没有继续了,毕竟搞这个软件还是想练练android破解的技术。
0x02
既然不能免费看正版源那么让我免费看看盗版源总行吧。记得某次更新前所有的书都能看盗版源,之后就只有一些没什么人看的书可以了,不过官方依然保留了所有书的接口。web选手做这种事第一反应还是抓包看看,找两本书,一本叫《蛊真人》,挺火的小说,在看书的页面里没有换源的选项,抓到的包如下:
zhuishu-4.jpg
另外找了个没什么人看的小说《极品家丁后传》:
zhuishu-5.jpg
经过对比两个包发现了一个名叫_le的参数返回值有所区别,于是找了些其它的书实验发现凡是能够看盗版的该参数值都返回true,而只能看正版的则相反。确定了这一点后就要去程序里修改使用到这个参数的相关代码了,不过在这之前有一件事要做,就是去掉签名校验。这个软件在libtest.so里对整个包有个签名的校验,其校验核心函数是isZhuishuSignKey,代码如下
[C] 纯文本查看 复制代码
signed int __fastcall isZhuishuSignKey(JNIEnv *a1, int a2)
    {
      JNIEnv *v2; // r4@1
      int v3; // r5@1
      int v4; // r0@1
      int v5; // r7@1
      int v6; // r0@1
      int v7; // r0@1
      int v8; // r6@1
      int v9; // r0@1
      int v10; // ST0C_4@1
      int v11; // r0@1
      int v12; // r5@1
      int v13; // r0@1
      int v14; // r5@1
      int v15; // r0@1
      int v16; // r0@1
      int v17; // r0@1
      int v18; // r0@1
      int v19; // r5@1
      int v20; // r0@1
      int v21; // r0@1
      int v22; // r0@1
      signed int result; // r0@2
    
      v2 = a1;
      v3 = a2;
      v4 = ((int (*)(void))(*a1)->GetObjectClass)();
      v5 = v4;
      v6 = ((int (__fastcall *)(JNIEnv *, int, const char *, const char *))(*v2)->GetMethodID)(
             v2,
             v4,
             "getPackageManager",
             "()Landroid/content/pm/PackageManager;");
      v7 = ((int (__fastcall *)(JNIEnv *, int, int))(*v2)->CallObjectMethod)(v2, v3, v6);
      v8 = v7;
      v9 = ((int (__fastcall *)(JNIEnv *, int))(*v2)->GetObjectClass)(v2, v7);
      v10 = ((int (__fastcall *)(JNIEnv *, int, const char *, const char *))(*v2)->GetMethodID)(
              v2,
              v9,
              "getPackageInfo",
              "(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;");
      v11 = ((int (__fastcall *)(_DWORD, _DWORD, const char *, const char *))(*v2)->GetMethodID)(
              v2,
              v5,
              "getPackageName",
              "()Ljava/lang/String;");
      v12 = ((int (__fastcall *)(JNIEnv *, int, int))(*v2)->CallObjectMethod)(v2, v3, v11);
      ((void (__fastcall *)(JNIEnv *, int, _DWORD))(*v2)->GetStringUTFChars)(v2, v12, 0);
      v13 = ((int (__fastcall *)(JNIEnv *, int, int, int))(*v2)->CallObjectMethod)(v2, v8, v10, v12);
      v14 = v13;
      v15 = ((int (__fastcall *)(JNIEnv *, int))(*v2)->GetObjectClass)(v2, v13);
      v16 = ((int (__fastcall *)(JNIEnv *, int, const char *, const char *))(*v2)->GetFieldID)(
              v2,
              v15,
              "signatures",
              "[Landroid/content/pm/Signature;");
      v17 = ((int (__fastcall *)(JNIEnv *, int, int))(*v2)->GetObjectField)(v2, v14, v16);
      v18 = ((int (__fastcall *)(JNIEnv *, int, _DWORD))(*v2)->GetObjectArrayElement)(v2, v17, 0);
      v19 = v18;
      v20 = ((int (__fastcall *)(_DWORD, _DWORD))(*v2)->GetObjectClass)(v2, v18);
      v21 = ((int (__fastcall *)(_DWORD, _DWORD, const char *, const char *))(*v2)->GetMethodID)(v2, v20, "hashCode", "()I");
      v22 = ((int (__fastcall *)(JNIEnv *, int, int))(*v2)->CallIntMethod)(v2, v19, v21);
      if ( v22 == 1902783089 )
        result = 1;
      else
        result = (unsigned int)(v22 - 722848853) <= 0;
      return result;
    }

这个校验过程并不复杂,我们甚至不需要关心它是怎么校验的, 只需要把最后的return result;替换成return true;就行了。用IDA自带的patch功能或者找个16进制编辑器修改对应指令的机器码就行。改好了libtest.so后,我们就能自由地修改apk了。用jeb打开该apk,全局搜索字符串'_le',发现有两个与其相关的方法名字,一个是is_le,另一个是set_le,看了下数量也不是很多,就懒得一个一个看了,编辑相关的smali文件,把所有的名叫is_le的方法返回值都改为true,然后用androidcracktool重新打包签名生成新的apk文件,这次破解也就结束了,安装上看看效果:
zhuishu-6.png
打开《蛊真人》已经可以选取别的源了。
0x03
这个软件破起来确实没什么难度,不过还可以有更进一步的发挥,比如说解锁随机看书,解锁男生区女生区限制,去掉广告和一些无用的功能等。不过这些东西个人没什么需求,也就没有动力去弄了,先就这样吧。作为一个萌新来52还没正经发过什么帖子,主要是想记录下人生第一次破解软件,望大佬们勿笑。

点评

第一次认真看完每一个字  发表于 2017-4-18 20:37

免费评分

参与人数 88威望 +1 吾爱币 +103 热心值 +86 收起 理由
waddt123 + 1 + 1 谢谢@Thanks!
与时光赛跑 + 1 + 1 谢谢@Thanks!
black90 + 1 + 1 我很赞同!
martletkun + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
x358650 + 1 + 1 用心讨论,共获提升!
Gang_Yu + 1 + 1 我很赞同!
tarenze + 1 + 1 已答复!
Eerie + 1 + 1 我很赞同!
啊晨 + 1 + 1 我很赞同!
DPdp + 1 + 1 学习了
skamikoto + 1 + 1 用心讨论,共获提升!
尕可 + 1 + 1 感谢楼主,认真的看完学到了几个知识点!
cdhsss + 1 + 1 用心讨论,共获提升!
xiaminqq + 1 + 1 我很赞同!
vrsanwenyu + 1 + 1 用心讨论,共获提升!
黑洛 + 1 这仅仅是第一步而已
刘荣彬 + 1 + 1 已答复!
七月M + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
龙木木 + 1 + 1 学习了
92monkey + 1 + 1 我很赞同!
Suliaoguan + 1 + 1 我很赞同!
cxf35 + 1 + 1 我很赞同!
Koreyoshi0 + 1 谢谢@Thanks!
glkjcx + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
、Psycho + 1 + 1 热心回复!
brcaaa + 1 + 1 我很赞同!
好吧gg + 1 + 1 热心回复!
___Simple_love_ + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
erchioce + 1 + 1 我很赞同!
我的爱是你 + 2 + 1 通俗易懂
yuanmengxiaozi + 1 + 1 用心讨论,共获提升!
yuan3718 + 1 + 1 热心回复!
skyicefire + 1 + 1 我很赞同!
yhmcat + 1 + 1 我很赞同!
lin295693097 + 1 + 1 谢谢@Thanks!
Rea + 1 用心讨论,共获提升!
小白一枚求罩 + 1 + 1 我很赞同!
Alonc + 1 + 1 我很赞同!
z13678 + 2 + 1 热心回复!
ying4961 + 1 + 1 我很赞同!
l281180570 + 1 + 1 谢谢@Thanks!
jx1994 + 1 + 1 我很赞同!
懒惰的上帝 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
微笑你德哥 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
sgz2310 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
富春山居 + 1 + 1 谢谢@Thanks!
jwonderful + 1 谢谢@Thanks!
jackliqiao + 1 + 1 我很赞同!
二狗有春天 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
oushugui520 + 1 + 1 我很赞同!
星空下的梦 + 1 + 1 用心讨论,共获提升!
st1717 + 1 + 1 我很赞同!
noess + 1 + 1 用心讨论,共获提升!
i5suci + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
苏小小 + 1 + 1 谢谢@Thanks!
海绵foryou + 1 + 1 热心回复!
soyiC + 1 + 1 用心讨论,共获提升!
247192825 + 1 + 1 谢谢@Thanks!
yumen1320 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
172045506 + 1 + 1 热心回复!
甜心宝贝2 + 1 已答复!
373161977 + 1 + 1 我很赞同!
wcj1997 + 1 + 1 已答复!
夏雨微凉 + 1 + 1 这还小白呢!
小婊砸 + 1 + 1 谢谢@Thanks!
spguangz + 1 + 12 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ayoma + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hua3354 + 1 + 1 用心讨论,共获提升!
乱断言 + 1 + 1 我很赞同!
kkpljat + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
125733578 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
1810367191 + 1 + 1 我也是小白 教教我呗 有教程最好了
jiaxlei + 1 + 1 我很赞同!
白帽子 + 2 + 1 很棒的分析~
china1213100 + 1 + 1 我很赞同!
zjjxyz + 1 + 1 谢谢@Thanks!
vexing + 1 + 1 我很赞同!
hejialong + 2 + 1 谢谢@Thanks!
as8812287 + 1 + 1 已答复!
米聊45673767 + 1 + 1 不错,再接再厉!
刺心 + 2 + 1 我很赞同!
YYL7535 + 1 + 1 谢谢@Thanks!
hellowmykami + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
H夜 + 1 我很赞同!
Mr丶X + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
紫色の风铃 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
王某人 + 1 + 1 其实我已经看晕- -
wbr90 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

jiangge123 发表于 2017-4-17 16:14
哦哦,看了这个帖子,我只想说我只能当一粒沙子..
米聊45673767 发表于 2017-4-17 16:14
哥们我发现你丢了个字  burpsuite  不是burpsuit  哈哈
王某人 发表于 2017-4-17 14:37
OmJJWang 发表于 2017-4-17 14:45
你只写了大纲,没有写过程
viptech 发表于 2017-4-17 14:47
感谢分享
黑山走天涯 发表于 2017-4-17 14:53
支持!学习 了!
 楼主| watchdoge 发表于 2017-4-17 15:33
OmJJWang 发表于 2017-4-17 14:45
你只写了大纲,没有写过程

呃,具体改的话就是搜索字符找到方法然后改改返回值,感觉太low了就没写了
liuzixue 发表于 2017-4-17 15:48
支持支持,感谢分享
wapj2016pspndsq 发表于 2017-4-17 15:53
技术贴啊~! 村支持了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 18:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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