1.发布库AAR至mavenCentral看这篇文章就可以了
2.ysoserial-URLDNS调试分析
发布库AAR至mavenCentral看这篇文章就可以了
发布库AAR至mavenCentral看这篇文章就可以了 在继续这篇文章内容之前,载源我们先回顾一下最初我们是码j码怎么去打包一个aar,然后再复制粘贴到项目里面,载源如此反复的码j码复杂操作,通过本文以后就不用再每次都单独拷贝aar出来了 如何打包AAR在上篇已有详细介绍,载源具体参考:打包完成以后我们来接着介绍发布aar至中央仓的码j码java生成源码3种方式 一:发布AAR至Bintray(不再推荐) 采用bintray发布的方案,这种方式的载源引用需要配置jcenter()依赖关系。bintray是码j码属于JFrog这家公司的,Google当年也是载源有很多开发库发布在这里的。随着jcenter的码j码关闭,用bintray发布aar的载源方式我不再推荐,但是码j码原文章我也保留纪念了。 二:发布AAR至jitpack(推荐) 采用github的载源分发方式,该方式的码j码引用需要配置maven { url "jitpack.io" }的依赖。github是载源代码托管平台,大部分的项目都是发布至github.com的。这也是我推荐的一种方式。 三:发布AAR至MavenCentral(推荐) 需要配置mavenCentral依赖关系。由sonatype运营,重要性凸显,对于源代码有所保留的jdbc源码分析可以使用这种方式来发布你个人的开发库。操作步骤包括:注册sonatype账号
创建一个issue
创建GPG秘钥
准备配置文件
执行打包AAR和上传
验证使用刚刚发布的Livery
三方案总结:bintray:不再推荐,国内不可用,已停止维护。
jitpack:利用github作为依托,易于分发。
MavenCentral:安全性要求高,操作步骤详细,重要性提高。
使用刚刚发布的库的步骤:在项目根目录的build.gradle中配置依赖
在Item/app Module的build.gradle中引用库
执行打包AAR和上传任务
验证结果
注意事项:注册账号时使用真实邮箱,密码复杂。柳峰 源码
创建GPG秘钥,保存相关信息。
确保配置文件地址正确,注意网络问题。
避免使用最后一个版本号作为依赖。
综上所述,通过使用jitpack或MavenCentral,可以更高效、便捷地发布AAR至合适的仓库,以供团队使用。蜘蛛程序源码在选择发布方式时,应综合考虑项目需求、安全性要求和操作复杂度。ysoserial-URLDNS调试分析
ysoserial是强大的反序列化工具,深入研究其利用链能帮助理解Java语言特性,为Java安全学习打下坚实基础。本文将重点分析URLDNS的利用过程。
利用链分析如图所示,当HashMap的key为URL类对象时,调用key.hashCode实际上触发了URL类对象的wpa supplicant源码hashCode方法,从而引发DNS解析。实现自定义exp较为简单,通过设置hashCode为1,使得putval时重新计算hashCode,以触发DNS解析。
使用IDEA,结合ysoserial jar (jitpack.io/com/github/f...)和ysoserial源码 (codeload.github.com/fro...)进行实践。
进行反序列化操作,查看dnslog,倒推分析过程。通过urldns类文件,我们发现ysoserial调用getobject方法,URLStreamHandler类处理url解析。URL类解析出协议、主机名、端口号等信息,协议决定交互规范,如HTTP、FTP等。在成功构造URL实例后,openConnection()方法返回URLConnection对象,URL对象代理调用URLStreamHandler的openConnection()方法。
接着,实例化HashMap类,调用readobject方法进行反序列化。观察反序列化代码,发现调用putVal方法进行hash计算。首先深入hash方法,处理null和非null情况。对于URL对象作为key,可追踪到URL类的hashCode方法。判断hashCode是否等于-1,返回或调用handler的hashCode方法,最终调用实际的URL对象方法。
深入跟踪getHostAddress方法,其中InetAddress.getByName(host)实现DNS请求。通过DEBUG调试,发现反序列化过程中执行了实际的DNS查询。最后,反序列化的值即为利用过程的结果。