qiucx 发表于 2021-4-1 10:47

关于暴力破解恒生交易系统协议的思路探讨

本帖最后由 qiucx 于 2021-4-1 11:04 编辑

恒生交易系统被用于证券、股票、邮币卡等系统,是一款非常不错的产品。交易协议是socket通讯或者安全socket通信。(前期的分析就不讲了,可以通过抓二进制数据看看结构)。破解的第一步首先要获取跟服务器的交互数据。我主要采用插桩的办法,打印数据到文件中。com/android/killer/Log原来有打印字符串的函数,改成写二进制数据到文件的方法。代码如下:
.method public static logToFile([B)V
    .locals 6
    .param p0, "bytes"    # [B

    .prologue
    .line 137
    :try_start_0
    new-instance v1, Ljava/io/File;

    invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;

    move-result-object v4

    const-string v5, "/qiucxjiuzhouA.txt"

    invoke-direct {v1, v4, v5}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V

    .line 138
    .local v1, "file":Ljava/io/File;
    invoke-virtual {v1}, Ljava/io/File;->exists()Z

    move-result v4

    if-nez v4, :cond_0

    .line 139
    invoke-virtual {v1}, Ljava/io/File;->createNewFile()Z

    .line 141
    :cond_0
    new-instance v2, Ljava/io/FileOutputStream;

    const/4 v4, 0x1

    invoke-direct {v2, v1, v4}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;Z)V

    .line 142
    .local v2, "fos":Ljava/io/FileOutputStream;
    invoke-virtual {v2, p0}, Ljava/io/FileOutputStream;->write([B)V

    .line 144
    const-string v4, "\r\n"

    invoke-virtual {v4}, Ljava/lang/String;->getBytes()[B

    move-result-object v3

    .line 145
    .local v3, "newLine":[B
    invoke-virtual {v2, v3}, Ljava/io/FileOutputStream;->write([B)V

    .line 147
    invoke-virtual {v2}, Ljava/io/FileOutputStream;->flush()V

    .line 148
    invoke-virtual {v2}, Ljava/io/FileOutputStream;->close()V
    :try_end_0
    .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0

    .line 153
    .end local v1    # "file":Ljava/io/File;
    .end local v2    # "fos":Ljava/io/FileOutputStream;
    .end local v3    # "newLine":[B
    :goto_0
    return-void

    .line 150
    :catch_0
    move-exception v0

    .line 151
    .local v0, "e":Ljava/io/IOException;
    invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V

    goto :goto_0
.end method

直接把数据写到文件qiucxjiuzhouA.txt中。插到OutputStream的write方法前面。

   invoke-static {v4}, Lcom/android/killer/Log;->logToFile([B)V
    invoke-virtual {v3, v4}, Ljava/io/OutputStream;->write([B)V

    invoke-virtual {v3}, Ljava/io/OutputStream;->flush()V
大部分数据都能人眼看出来,部分数据看不出来。




这是因为这些是压缩数据,需要解压缩,可以用 java.util.zip.Inflater;实现。解压后的二进制数据就能看清楚了。

不能讲太详细,思路就这样,如果看的人多,热心值高于30,我再将怎么用java模拟跟服务器操作写一下。暴力的含义是模拟时直接用我们打印的数据直接读取,然后跟服务器交互,更好的办法是利用恒生SDK跟服务器交互。都能实现登录、购买等核心功能。

有帮助的话请大家免费评点分,感谢!

qiucx 发表于 2021-4-1 15:35

plauger 发表于 2021-4-1 15:22
如果真能做到“都能实现登录、购买等核心功能”,那说明协议都搞清楚了啊,这可是实现了量化交易重要的一步 ...

量化交易难的不是技术,是模型。稳定高盈利的模型才是关键。获取数据也不难,花不了多少钱,当然还有通道的费用。

ygq170063 发表于 2021-4-1 11:04

学习一下,思路非常棒,感谢

j717013225 发表于 2021-4-1 11:24

能留个联系方式吗

可爱的反派角色 发表于 2021-4-1 11:28

楼主牛逼,好好研究一下

墨羽尘 发表于 2021-4-1 11:34

学习一下,感谢大佬的思路

pdcba 发表于 2021-4-1 11:59

跟帖学习,思路很棒

xiaopa 发表于 2021-4-1 12:09


感谢楼主分享优质内容,希望继续努力!感谢楼主分享优质内容,希望继续努力!

我深情的复制了前方代码,我挺你,楼主加油!

Kevin丶 发表于 2021-4-1 12:24

感谢大佬的思路

hanyufeng 发表于 2021-4-1 12:48

swhyy 发表于 2021-4-1 12:53

这个不错,支持楼主的方法,666
页: [1] 2 3 4 5 6
查看完整版本: 关于暴力破解恒生交易系统协议的思路探讨