黄色土豆 发表于 2024-3-11 18:24

请问这个字节是怎么生成的?达梦JDBC

本帖最后由 黄色土豆 于 2024-3-11 18:28 编辑

使用达梦的JDBC去查询数据的时候,返回的报文包会进行校验;
拿到 var1 和 var2 进行比较,如果不相同,则报 “消息校验异常”,

目前看到是拿到的是返回报文中,第20字节进行的校验;

0x31 转成 十进制是 49,
可以看到 var1 变量是拿的数据包中的19位字节,从0开始第19个就是 0x31 转十进制之后的 49,这个数值是服务器返回给JDBC的数据包获取到的,

然后看到 var2 这个变量是把 this.cm.b 拿到了 this.a()这个方法里面执行的;
可是发现 a() 方法里面的var1变量调用了 var.getByte() 方法,但是追溯 var1 是 int 类型,int类型有 getByte() 方法?,再往下 debug,就进不去下一步了,

有没有使用达梦数据库的大佬,帮忙debug研究一下,这个var2变量是怎么生成的?

Vvvvvoid 发表于 2024-3-12 08:53

Driver 是混淆过快了吗

黄色土豆 发表于 2024-3-12 09:18

本帖最后由 黄色土豆 于 2024-3-12 09:19 编辑

Vvvvvoid 发表于 2024-3-12 08:53
Driver 是混淆过快了吗
你好,你这边有达梦的 Driver 吗,可以看一下,是在 dm/jdbc/b/b/o/L() 方法,随便查询一个select语句就可以经过这个方法

黄色土豆 发表于 2024-3-12 15:05


顶一下,来个大佬
页: [1]
查看完整版本: 请问这个字节是怎么生成的?达梦JDBC