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

一、目标

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

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

  • unidbg

  • Unidbg-server

二、步骤

Unidbg-server

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

github.com/cxapython/u…

git clone 下来,然后导入到idea

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


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

跑一下作者提供的例子

Unidbg在哪里

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

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

加点料

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

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

  • 修改 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})@ResponseBodypublic 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;}}


 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
2023-pytorch是一个开源深度学习库,它在计算机视觉领域有广泛的应用。本文将手把手你如何使用CSDN来学习和获取有关2023-pytorch分类的相关资料和程。 首先,在你的浏览器中打开CSDN的官方网站,网址为www.csdn.net。在主页上,你可以看到各种热门的技术文章、博客和论坛。在搜索框中输入"2023-pytorch分类",然后点击搜索按钮。CSDN将会为你展示与该关键词相关的所有内容。 接下来,你可以通过筛选工具来找到特定类型的文章或程。例如,你可以选择只查看博客、文章或程。你还可以选择按照发布时间或热度排序来获取最新或最受欢迎的内容。 当你找到一篇感兴趣的程时,点击进入阅读。通常,程会提供详细的步骤和示例代码,帮助你了解如何使用2023-pytorch进行分类任务。你可以按照程中的指示一步一步地操作,并理解每个步骤的原理和作用。 除了阅读程外,CSDN还提供了一个活跃的技术问答社区。你可以在这里向其他用户提问、讨论问题,或分享你的学习体验和心得。社区中的任何人都可以回答你的问题,所以不要犹豫,积极参与其中。 此外,CSDN还为用户提供了博客功能,你可以创建自己的博客来记录学习过程和分享实践经验。通过写博客,你还可以得到其他人的反馈和建议,不断提升自己的技术水平。 总结起来,要使用CSDN学习和获取有关2023-pytorch分类的相关资料和程,你可以通过搜索功能找到相关内容,阅读程并按照指导一步一步地进行实践,参与技术问答社区以及利用博客功能分享你的学习心得和经验。通过这些途径,你将能够快速掌握2023-pytorch分类的基本原理和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方班网络安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值