吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7108|回复: 64
收起左侧

[Android 分享] 记录某app难忘的抓包之旅

  [复制链接]
Light紫星 发表于 2023-10-11 14:27
本帖最后由 Light紫星 于 2024-1-8 17:18 编辑

今天群友发了个app,问我可不可以抓包,app是水星WiFi的app,我本着天下还能有抓不到的包的想法,折腾了三个小时,抓包成功,在此记录一下本次难忘的抓包之旅。

首先,拿到app,发现无壳,无签名校验,然后直接lsp模块打开justtrustme,然后小黄鸟尝试抓包,发现app会提示网络错误。

然后全局搜索https字样,全部替换成了http,由于目标app是rn写的,所以把index.bound的js里面的https也都替换了,再次尝试,还是抓不到包,黄鸟提示app不信任系统证书,要你去替换app内部的证书。

现在目标清晰了,寻找app内部的证书,看到目标app的内部有几个pem文件,寻思直接替换呗,发现无用。

最后全局搜索了一下.pem,发现了一个so,名称为libRouterAppContextJNI.so,IDA打开一看,别有一番天地,里面各种证书绑定啥的,操作了半天,最后用16进制编辑器替换掉了他原来的pem证书(这里的证书长度和黄鸟的长度不一样,怎么办呢,尾部补空格呗)

最后打开app,发现提示无网络,这是正常的,因为pem被替换了,他不信任原本的证书了,打开黄鸟代{过}{滤}理,发现可以正常抓包,至此,抓包成功,本帖结束。

【2024-01-08更新】

最近看到有人不会替换so里面的证书文件,所以单独写一下教程:
去小黄鸟的设置里选择 ”导出HttpCanary 根证书“,然后选择pem格式,会看到提示导出成功,这时候把pem文件发送到电脑上备用。

然后安装010editor或者其他16进制编辑器(可以在爱盘下载)

然后用010editor打开 libRouterAppContextJNI.so 文件,然后搜索 “-----BEGIN CERTIFICATE-----” 关键字,会找到多处,这个时候,复制 pem文件中的base64部分的数据,替换掉原来的数据(这里因为要对齐数据,所以后面我会提供一个python脚本操作)

把so和pem放到脚本同目录,运行如下脚本,执行替换操作,然后替换so,先打开黄鸟开启抓包,再打开对应的软件,可能 会提示app使用了自签名证书,这时候右上角导入就行了,如果没替换so,会提示下图的 目标应用使用了非系统的CA证书,无法抓包。

[Python] 纯文本查看 复制代码
import os
PemFilename='HttpCanary.pem'
SoFilename='libRouterAppContextJNI.so'
SoBakFilename='libRouterAppContextJNI_bak.so'

ReplaceContentStart='-----BEGIN CERTIFICATE-----'
ReplaceContentEnd='-----END CERTIFICATE-----'

def FindMid(text,start,end):
    startIndex=text.find(start)
    endIndex=text.find(end,startIndex+len(start))
    return text[startIndex+len(start):endIndex]
    
def PadPem(pemdata,length):
    if(length<len(pemdata)):
        return 
    padlen = length - len(pemdata)
    return ReplaceContentStart.encode()+pemdata +ReplaceContentEnd.encode()+ b'\x00'*padlen
    
def ReplacePem():
    if(os.path.exists(SoBakFilename)):
        print('可能已经补丁过'+SoFilename)
        return
    PemContent = open(PemFilename,'r',encoding='u8').read()
    PemBase64Content=FindMid(PemContent,ReplaceContentStart,ReplaceContentEnd).encode()
    #print(PemBase64Content)
    SoFileContent = open(SoFilename,'rb').read()
    open(SoBakFilename,'wb').write(SoFileContent)
    print('源文件已经备份为:'+SoBakFilename)
    
    startText = ReplaceContentStart.encode()
    endText = ReplaceContentEnd.encode()
    startIndex=0
    index = 0
    while(1):
        startIndex = SoFileContent.find(startText,startIndex)
        if(startIndex==-1):
            break
        endIndex = SoFileContent.find(endText,startIndex+len(startText))
        rawPem = SoFileContent[startIndex+len(startText):endIndex]
        #if(rawPem.find(b'MIIGaDCCBFCgAwIBAgIJ')==-1):
        #    startIndex = endIndex+len(endText)
        #    continue
        if(len(rawPem)<len(PemBase64Content)):
            print(str(startIndex)+" 处补丁失败,长度超过了要补丁的pem长度!")
            startIndex = endIndex+len(endText)
            continue
        PadPemData = PadPem(PemBase64Content,len(rawPem))
        
        SoFileContent = SoFileContent[:startIndex]+PadPemData+SoFileContent[endIndex+len(endText):]
        
        index+=1
        print('补丁了第 '+str(index) +' 处,偏移为 '+str(startIndex) +' 到'+str(endIndex))
        startIndex = endIndex+len(endText)
        
    open(SoFilename,'wb').write(SoFileContent)
    
    print('补丁完成!共补丁了'+str(index)+'处!')

ReplacePem()


replacePem.zip (996 Bytes, 下载次数: 19)


image.png

image.png

image.png

image.png
image.png

image.png

免费评分

参与人数 12吾爱币 +18 热心值 +11 收起 理由
junjia215 + 1 + 1 用心讨论,共获提升!
NSatori + 1 + 1 谢谢@Thanks!
liuxuming3303 + 1 + 1 谢谢@Thanks!
安道尔的鱼 + 1 + 1 我很赞同!
Komek + 1 + 1 我很赞同!
kenchanone + 1 + 1 谢谢@Thanks!
zhenzhenaidami + 1 + 1 用心讨论,共获提升!
arctan1 + 1 + 1 用心讨论,共获提升!
youxiaxy + 1 + 1 给大哥平个分
shuaibi_chen + 1 + 1 谢谢@Thanks!
正己 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
x3e5 + 1 用心讨论,共获提升!

查看全部评分

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

孤狼微博 发表于 2023-10-12 00:01
纳尼,一般遇到这种我直接卸载秒完成,世上无难事只要肯放弃
laos 发表于 2023-10-11 15:32
现在抓包不学深一点都搞不了

前段时间遇到一个很黄的app, 应该是双向认证的, 可证书导出来还是无法抓包,
g188666 发表于 2023-10-11 15:58
一只大菜猫 发表于 2023-10-11 14:34
现在很多APP越来越难抓了
slslsl 发表于 2023-10-11 14:48
直接虚拟机装一手安卓7以下版本来抓应该比较容易一些
Monklamn 发表于 2023-10-11 14:56
slslsl 发表于 2023-10-11 14:48
直接虚拟机装一手安卓7以下版本来抓应该比较容易一些

lsp 有一个模块已经把证书移到根目录,这样就可以抓包了
xxlq123 发表于 2023-10-11 15:16
有没有万能抓包的?
liuwujun521 发表于 2023-10-11 15:43
看着好6的样子
半杯不倒 发表于 2023-10-11 16:02
你很6666
currentdirect 发表于 2023-10-11 16:48
学习了学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 11:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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