Unidbg + Web = Unidbg-server 手把手教你搭个签名服务器

简介: Unidbg + Web = Unidbg-server 手把手教你搭个签名服务器

一、目标


爆肝+熬夜,终于把so用unidbg跑起来了,总不能放在硬盘里发霉吧。我们得在生成环境下用起来。


最方便的方式就是租台云服务器,然后把Unidbg部署上去,就可以给我们的工作者程序提供云签名服务了。


  • unidbg
  • Unidbg-server


二、步骤

Unidbg-server


玩Unidbg还得是java老艺术家才行,cxapython大佬提供了一个springboot运行unidbg的方案:


github.com/cxapython/u…


git clone 下来,然后导入到idea99.png


然后、编译、运行......

ffMac:unidbgweb fenfei$ python3 send.py
{'X-Khronos': '1627183488', 'X-Gorgon': '0401007008006c494547b54e36413a81b1a8118d238f2dffd9b3'}


跑一下作者提供的例子

100.png


一套行云流水,顺利跑通。现在做开源的大佬都这么拼了? 简直开箱即用


Unidbg在哪里


我们只下载了Unidbg-server的代码,并没有下载Unidbg的代码?为啥直接就能跑起来?

奥秘在pom.xml里面,加载了线上的unidbg模块,所以可以直接跑起来。


加点料


通过前面的学习,我们对Unidbg已经有一定的熟悉了,所以可能维护了一份定制的修改。这样问题就来了,可不可以不加载线上的Unidbg的代码,而加载我们本机修改过的版本?


  • 首先把我们定制版的unidbg编译成jar包,参考  91fans.com.cn/post/unidbg…
  • 在 Unidbg-server工程的根目录下(和pom.xml同级目录)新建 libs 目录


101.png

101.png


把定制版的unidbg编译生成的一堆jar包拷进去

  • 修改 pom.xml
// 删除这两个段, 不使用线上的unidbg
<dependency>
  <groupId>com.github.zhkl0228</groupId>
    <artifactId>unidbg-api</artifactId>
    <version>0.9.0</version>
</dependency>
<dependency>
  <groupId>com.github.zhkl0228</groupId>
    <artifactId>unidbg-android</artifactId>
    <version>0.9.0</version>
</dependency>
// 增加这一个段,使用本地的unidbg
<dependency>
  <groupId>unidbg</groupId>
  <artifactId>unidbg</artifactId>
    <version>0.9.5</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/unidbg-parent.jar</systemPath>
</dependency>
  • 然后在左侧工程窗口点右键  Maven -> Reload project


  • 重新编译下。 报错了,我就知道不会这么顺利。
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instanceiate [com .damei.xhs.xhsshield.controller.Xhs668Controller]:构造函数抛出异常;嵌套异常是 java.lang.NoSuchFieldError: OSX_ARM64
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:225)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
at org .springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1308)
... 18 更多
引起:java.lang.NoSuchFieldError:OSX_ARM64
  • 这是为啥呀,百思不得其姐。算了问问谷哥吧。


在Unidbg的github上有个兄弟提了一个issues,和我们遇到的问题一样。 目前作者还木有解决方案。不过这个老兄说: 我用了之前的 0.9.2 没有这个问题,0.9.3 就出现了这个问题


再仔细看看Unidbg-server作者的玩法,他用的是Unidbg的 0.9.0版本。


好吧,目前的权宜之计是把0.9.2的版本Unidbg代码下载回来,然后加入我们的定制代码。再编译一下,顺利跑过。


有点慢?再优化一把


生产环境下的性能瓶颈可能在unidbg的模拟器初始化上,我们可以只初始化一个模拟器,然后每次做签名的时候只需要调用指定的函数就行。


在controller目录下创建一个 FenfeiController.java

public class FenfeiController {
    public static DouyinSign instance;
    static {
        instance = new DouyinSign();
    }
    @RequestMapping(value="dySignEx",method =  {RequestMethod.GET,RequestMethod.POST})
    @ResponseBody
    public String dySign(@RequestParam("url") String url) {
        Map<String,String> result= instance.crack(url);
        String jsonString = JSON.toJSONString(result);
        return jsonString;
    }
}


这样模拟器只初始化了一次,感觉能快一些了。


不过又引入了一个新问题,模拟器是被共享了,并发的时候是会出问题的,这也难不倒我们,加个锁就行了

public String dySign(@RequestParam("url") String url) {
        synchronized (this) {
            Map<String, String> result = instance.crack(url);
            String jsonString = JSON.toJSONString(result);
            return jsonString;
        }
    }


完美收工,上鲜啤。


三、总结


可以通过application.properties自行修改服务的地址和端口, 目前我使用的结果是只改端口就行,ip地址就保持 0.0.0.0就可以了。


开源程序的版本搭配也很重要,发现和最新代码不兼容的时候,可以研究下回退一两个版本。


开箱可用,是大佬们努力的结果。不过我们不能只满足于开箱就用,大概原理还是要了解一下的。不然稍微定制下就抓瞎了。


Unidbg-server编译成jar包,请参考 91fans.com.cn/post/unidbg…

11.png

我们生来彷徨


TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。


关注微信公众号: 奋飞安全,最新技术干货实时推送


相关文章
|
3月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
78 3
|
4月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
65 3
|
6月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
287 0
|
6月前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
56 0
|
28天前
|
弹性计算 数据挖掘 应用服务中间件
阿里云轻量应用服务器68元与云服务器99元和199元区别及选择参考
目前阿里云有三款特惠云服务器,第一款轻量云服务器2核2G68元一年,第二款经济型云服务器2核2G3M带宽99元1年,第三款通用算力型2核4G5M带宽199元一年。有的新手用户并不是很清楚他们之间的区别,因此不知道如何选择。本文来介绍一下它们之间的区别以及选择参考。
410 87
|
21天前
|
存储 弹性计算 应用服务中间件
阿里云轻量应用服务器出新品通用型实例了,全球26个地域可选
近日,阿里云再度发力,推出了首款全新升级的轻量应用服务器——通用型实例。这款服务器实例不仅标配了200Mbps峰值公网带宽,更在计算、存储、网络等基础资源上进行了全面优化,旨在为中小企业和开发者提供更加轻量、易用、普惠的云计算服务,满足其对于通用计算小算力的迫切需求。目前,这款新品已在全球26个地域正式上线,为全球用户提供了更加便捷、高效的上云选择。
136 27
|
12天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云AI服务器价格表_GPU服务器租赁费用_AI人工智能高性能计算推理
阿里云AI服务器提供多种配置,包括CPU+GPU、FPGA等,适用于人工智能、机器学习和深度学习等计算密集型任务。本文整理了阿里云GPU服务器的优惠价格,涵盖NVIDIA A10、V100、T4等型号,提供1个月、1年和1小时的收费明细。具体规格如A10卡GN7i、V100-16G卡GN6v等,适用于不同业务场景,详情见官方页面。
82 11
|
13天前
|
存储 弹性计算 数据挖掘
阿里云服务器ECS通用算力型u1和ECS经济型e实例性能特点、使用及常见问题解答FAQ
阿里云ECS云服务器的经济型e实例和通用算力型u1实例深受开发者和中小企业青睐。e实例适合中小型网站、开发测试等轻量级应用,采用共享CPU调度模式,性价比高;u1实例则适用于中小型企业级应用,提供更高的性能保障和稳定性,支持固定CPU调度模式,计算性能更稳定。同等配置下,u1实例在网络带宽、IOPS等方面表现更优,价格也相对较高。个人用户可选择e实例,中小企业建议选择u1实例以确保业务稳定性。
|
2月前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
|
1月前
|
存储 运维 安全
阿里云弹性裸金属服务器是什么?产品规格及适用场景介绍
阿里云服务器ECS包括众多产品,其中弹性裸金属服务器(ECS Bare Metal Server)是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。分钟级的交付周期将提供给您实时的业务响应能力,助力您的核心业务飞速成长。本文为大家详细介绍弹性裸金属服务器的特点、优势以及与云服务器的对比等内容。
141 23