在TLS协商期间,客户端将支持的密码列表发送到服务器,服务器选择一个密码,然后开始加密.当我HttpsURLConnection用于通信时,我想更改Android发送到服务器的密码列表.
我知道我可以setSSLSocketFactory在HttpsURLConnection对象上使用它来设置它SSLSocketFactory.当我想要更改由SSLSocket返回的信任管理器等时,这非常有用SSLSocketFactory.
我知道一般这个密码组列表可以使用编辑SSLParameters对象,并将其传递到SSlsocket或SSLEngine使用他们提供的方法的对象.
但SSLSocketFactory似乎没有公开这样的方法!
我找不到一种方法来改变我传递给的创建SSLParameters的返回SSLSocket对象.SSLSocketFactoryHttpsURLConnection
该怎么办?
我想这也与Java有关,不仅仅是Android.也许有一种OO方式来做(例如扩展SSLSocketFactory并提供给它HttpsURLConnection?)
有没有办法以某种方式'保护'Android平台的本机共享库(.so)以防二进制更改?例如,在逆向工程应用程序之后,有人可能会用NOP覆盖JMP指令,并将该库分发到有根设备.
有什么人可以做的吗?
我在这里寻找的是关于实现一系列检查(例如加密,校验和等)的想法.当然,因为平台看起来不像它提供支持(如果我错了就纠正我),它必须是所有'客户端'.因此整个事情有点徒劳,但至少会妨碍逆向工程.