一木记账 深层代码逆向分析与实现免登录

查看 62|回复 10
作者:anke1   
前言
大家好,我是安柯,看到上贴的教程大家不是太懂,我也讲的不细致,于是咱们再来一遍 会的复习一遍 不会的好好学习!
教程1.先从会员开始分析,我们常量过滤会员,找到永久会员点进去
代码分析:第一段和第二段是调用静态方法和调用实例方法储存,就不做过多解释我们直接看第三段 第一个if判断语句 如果v0(user)为0或者null 那么跳转到cond49
接下来根据调用getviptype获取VIP类型,根据类型设置不同的test文本(说白了就是根据赋值判断是否显示会员字样)
看②处,如果viptype等于如果为0则设置文本为普通会员为2则设置文本为永久会员


1.jpg (191.55 KB, 下载次数: 0)
下载附件
2024-7-28 13:10 上传

③处表示 在vip类型为1时 用0x7f1201a2获取字符串资源,用来插入VIP到期时间后面就是调用getviptime获取VIP时间  然后格式化时间 设置文本


3 (2).jpg (113.98 KB, 下载次数: 1)
下载附件
2024-7-28 13:11 上传

好的,这时候我们就明白为什么替换正则表达式时是v1  0×2了
其实这段代码你转Java更好理解 0=普通  2=永久  1=根据时间显示文本


2.jpg (143.01 KB, 下载次数: 0)
下载附件
2024-7-28 13:12 上传

云功能
​同样先解锁会员,我们进入软件,点击云端上传时下方会显示鉴权失败的字样,那我们就常量过滤一下,结果真的有,那我们进去看看
​


IMG_20240728_033501.jpg (152.69 KB, 下载次数: 1)
下载附件
2024-7-28 13:14 上传

​④处主要是根据body的返回值转换为json类型判断getcode是否不为0,得出两种情况  (1)上传成功(2)上传失败或异常  所以我们把①处删除即可解决上传失败问题
​
​然后我们再次测试发现会卡在这个页面


3.jpg (100.55 KB, 下载次数: 1)
下载附件
2024-7-28 13:14 上传

于是我们再次常量搜索关键字眼
​进入然后分析其实这个和上面的有过之而无不及


IMG_20240728_033608.jpg (166.82 KB, 下载次数: 1)
下载附件
2024-7-28 13:14 上传

​⑤处也同样是调用getcode获取响应码然后判断是否不为0  为0  代表成功  就会显示“数据正在........”  所以我们直接把⑤处删除 代码的判断和响应会跳过 直接通过activity实例
​
​BackupGuideActivity$c类  这里的也是同样的道理就不在叙述了
​​免登录
首先打开APP进入到登录界面 打开界面布局/开发助手获取密码的ID和当前界面的activity



3be3f7d892a62339dddaf0d9b6aca446_750.png (69.86 KB, 下载次数: 1)
下载附件
2024-7-28 13:32 上传



248b6bac94aff711fe884560495560cb_750.png (163.45 KB, 下载次数: 1)
下载附件
2024-7-28 13:32 上传

进入dex文件,类名搜索com.wangc.bill.activity.login.LoginByEmailActivity
接着在当前结果中搜索0x7f0a06d8,搜索类型为整数


36eb0deeca69dc29a6050e60610c540c_750.png (122.29 KB, 下载次数: 1)
下载附件
2024-7-28 13:32 上传



IMG_20240728_131721.jpg (69.03 KB, 下载次数: 1)
下载附件
2024-7-28 13:32 上传

选择第一个进去,查找所有调用



IMG_20240728_131735.jpg (60.87 KB, 下载次数: 0)
下载附件
2024-7-28 13:32 上传



IMG_20240728_131750.jpg (104.35 KB, 下载次数: 1)
下载附件
2024-7-28 13:32 上传

然后点击第一个进去,可以转Java分析,更简洁明了


IMG_20240728_131554.jpg (125.54 KB, 下载次数: 1)
下载附件
2024-7-28 13:33 上传

代码分析:如果checkbox被点击,那么两个编辑框里的内容传递给httpmanager类的getuseremail,根据Java可得第一个是email值,第二个是password值


IMG_20240728_131805.jpg (154.37 KB, 下载次数: 1)
下载附件
2024-7-28 13:33 上传

那咱们把email值和password值写明,不就可以实现免登录嘛
于是我们只复制159行到173行的代码,其他的全都删除
然后代码开头加上这两句即可
tips:寄存器要改成5以上(registers 5)
const-string v0,"邮箱账号@qq.com"
const-string v1,"邮箱密码"清空此方法名然后复制下方代码
[Java] 纯文本查看 复制代码
.line 9
     invoke-static {}, Lcom/wangc/bill/http/HttpManager;->getInstance()Lcom/wangc/bill/http/HttpManager;    move-result-object v2    invoke-static {v1}, Lcom/wangc/bill/utils/a;->e(Ljava/lang/String;)Ljava/lang/String;    move-result-object v1    new-instance v3, Lcom/wangc/bill/activity/login/LoginByEmailActivity$e;    invoke-direct {v3, p0, v0}, Lcom/wangc/bill/activity/login/LoginByEmailActivity$e;->(Lcom/wangc/bill/activity/login/LoginByEmailActivity;Ljava/lang/String;)V    invoke-virtual {v2, v0, v1, v3}, Lcom/wangc/bill/http/HttpManager;->getUserEmail(Ljava/lang/String;Ljava/lang/String;Lcom/wangc/bill/http/httpUtils/MyCallback;)V

这个是直接把代码写死了,点击登录直接把账号和密码自动读取,就不用咱们再输入了(不实用 但是不能不会)

结尾
教程到此结束,谢谢大家支持,一起进步!

下载次数, 上传

啊瓦尔特   


YUESE666 发表于 2024-7-28 20:03
你好,我发现还是无法获取上传了的备份

我也是,上传了备份,现在下载不了备份。卸载重装本地无数据了。如果找到办法或者有大佬回复,麻烦通知一声。。。
cxs808   

您好,请问最后一步的免签是怎么做的,我的MT和NP都实现不了。目前安装后运行就提示签名不对。
anke1
OP
  


deniol 发表于 2024-7-28 17:49
还是看不懂,不如直接发个破解后的APK文件吧

论坛不准发,哈哈哈,还不如看我上篇文章
117578111   

上篇文章修改替换0X2后多处报错无法保存
sharingcoke   

可以在电脑用Android studio'去修改吗
YUESE666   

你好,我发现还是无法获取上传了的备份
anke1
OP
  


117578111 发表于 2024-7-28 18:55
上篇文章修改替换0X2后多处报错无法保存

正则表达式可能转错了
ALazyDog   

学习一下
nico33   


117578111 发表于 2024-7-28 18:55
上篇文章修改替换0X2后多处报错无法保存

上篇文章有说,大概率是X写错了,不是字母
您需要登录后才可以回帖 登录 | 立即注册

返回顶部