吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3481|回复: 32
收起左侧

[Android 原创] 某人之家登陆逆向分析,初学者记录!

  [复制链接]
loveqq520 发表于 2024-4-4 23:12
本帖最后由 loveqq520 于 2024-4-4 23:23 编辑
自学逆向,第一次发帖,有不妥的话欢迎大佬指出

样本:5Yac5Lq65LmL5a62(小米商城下载)
工具:Eclipse (4.30.0)、JEB 4.20.0、Fiddler、MT管理器

一、初窥门径
打开fiddler,配置好代{过}{滤}理抓包,在app里选择账号密码登录,抓到如下包
image-20240404222355763.png
可以看到抓到了登录包,点进去发现账号是明文,密码被加密了,再抓一次试试看
image-20240404222617499.png
第二次使用相同密码发现再抓包发现密码的密文改变了,刚开始猜测是不是加了时间戳,后来发现是rsa加密,且是RSA/ECB/PKCS1Padding模式,由于填充,所以密文不一样,并查阅了资料,链接:https://blog.csdn.net/guyongqiangx/article/details/74930951

二、崭露头角
使用MT管理器提取apk,发现未加固,扔进JEB反编译 image-20240404223226467.png 根据技巧搜“password”搜索到好几个结果,一个个点进去看,发现可疑点
image-20240404223452156.png
转化为java查看
image-20240404223631194.png 看到这,我大致就觉得应该就是rsa加密了,这里正是登陆的Url,跟踪函数进去

三、渐入佳境
image-20240404223832101.png
发现了key,可以看出是公钥,跟踪进去StrUtil类看看
image-20240404224231003.png
可以看到了加密模式,这里就是将密码和公钥一起加密
image-20240404224522038.png
自己练手就写了一下java自己实现一下

[Java] 纯文本查看 复制代码
package com.frank;
​
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
import javax.crypto.Cipher;
​
public class RSA {
   
    public static String str_pubK = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7qPCn9w81CW7I9dbc+0YReFNEkiP/x7nTs5lAw+hLXmLsxNZtE/2kFN2XK3jcFOw6TSq/EbGhC9CD51q6n1B4AyfId+aGgB52ejRUrxvK+JOEWJrzXCbIOZg0QLfai+tFkmTi5jK91mQpX2di6xhiMk18gwnBmmNQQrSlEr1YgwIDAQAB";
    public static String data = "a12345678";
   
    public static PublicKey getPublicKey(String key) throws Exception {
        byte[] arr_b = Base64.getDecoder().decode(key);
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(arr_b);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicKey= keyFactory.generatePublic(keySpec);
        return publicKey;
    }
   
    public static byte[] encryptByPublicKey(String data, PublicKey publicKey) throws Exception {
        
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(1, publicKey);
        return cipher.doFinal(data.getBytes());
    }
   
    public static void main(String[] args) throws Exception {
        byte[] arr_b = encryptByPublicKey(data, getPublicKey(str_pubK));
        System.out.println(Base64.getEncoder().encodeToString(arr_b));
    }
}

由于每次加密都是随机的,又获取不到私钥解密,所以加密过程中有没有动过其他手脚未知

免费评分

参与人数 12威望 +1 吾爱币 +30 热心值 +12 收起 理由
donghong + 1 + 1 热心回复!
Sydyanlei0 + 1 + 1 用心讨论,共获提升!
allspark + 1 + 1 用心讨论,共获提升!
shenqi88 + 1 + 1 用心讨论,共获提升!
正己 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hpjfcc23 + 1 + 1 我很赞同!
unicornTwo + 1 + 1 我很赞同!
kylee + 1 + 1 我很赞同!
kittylang + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
seamusyang + 1 + 1 谢谢@Thanks!
ckvv + 1 谢谢@Thanks!
喵喵爱吃鱼 + 1 + 1 我很赞同!

查看全部评分

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

正己 发表于 2024-4-9 22:33
JIeJaitt 发表于 2024-4-9 19:21
算法助手是什么?大佬能指个路吗?我也是逆向新手

看我课程第九集
 楼主| loveqq520 发表于 2024-4-5 20:14
正己 发表于 2024-4-5 18:55
像这种原生加密,直接算法助手通杀

感谢正己大佬!哈哈哈,我是觉得初学的话最好不要上来就通杀,不然可能把自己都杀斯了,我马上还要发一篇帖子,自吐脚本通杀的,马上完稿了
258239234 发表于 2024-4-5 08:53
seamusyang 发表于 2024-4-5 11:01
感谢分享,学习好方法
lihuhu 发表于 2024-4-5 15:11
学习学习
raykeer 发表于 2024-4-5 15:27
学习了。
正己 发表于 2024-4-5 18:55
像这种原生加密,直接算法助手通杀
GoingUp 发表于 2024-4-6 07:57
8楼开始排队感谢
你这已经超出很多初学者了,利害了。
忧郁之子 发表于 2024-4-6 09:33
我突然感觉自己还不如初学者
西枫游戏 发表于 2024-4-6 10:49
只要公钥没啥问题,RSA加密出来的结果 再怎么变都是有效的 相信我就行
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-12 13:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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