关于反逆向方面想请教一下各位

2023-08-16 08:04:25 +08:00
 s7964926

业余时间用 c++做了个很小众的翻译软件,调用我 java 后端的翻译接口。 翻译方面是我自己购买的腾讯机器翻译的 api 。 我在软件里根据机器信息,时间戳,nonce 生成了一个 sign ,连同需要翻译的原文一起提交到我后端的接口进行验证,如果 sign 验证通过才返回信息,不通过直接拒绝。 想请问下各位,这个算法我使用了 vmp 的 sdk 虚拟化+混淆,在不会被脱壳的情况下,是不是不会被破解? 对软件逆向一窍不通,希望能得到各位大佬的指点,十分感谢。

5513 次点击
所在节点    程序员
64 条回复
joApioVVx4M4X6Rf
2023-08-16 09:25:46 +08:00
@s7964926 那就用 token 的方式,谁用给谁生成一个 token ,后台呢统计 token 的 IP 地址/调用次数之类的,从源头就解决了破解问题。而你提供的二进制程序加不加密都无所谓了,只是一个客户端而已
s7964926
2023-08-16 09:36:58 +08:00
@v2exblog 嗯啊,我寻思的是时间戳+全局唯一的 nonce+sign 验证再打个 vmp 保护壳就可以拦住不少人了,token 我也有生成但是不确保唯一,只是 mac 地址等 sha256 加密了一串。
s7964926
2023-08-16 09:39:53 +08:00
@ajaxgoldfish 感谢大佬回复。真的是打开了新世界的大门……
morgan1freeman
2023-08-16 09:50:29 +08:00
没有意义的,你算一下破解你这玩意的成本跟收益就完了,
搞逆向的也不是傻子,你弄个监控,如果 API 调用过量直接关掉,
然后升级一下客户端跟 sign 算法就好了,
谁没事,闲得蛋疼 为了你这个 API 来破解,你这是有家财万贯等着人偷呢,还是有金银珠宝等着人偷

所有的防护手段都是提升破解方的成本罢了,如果收益足够大 远大于成本,像微信这样的,总有人搞的
picone
2023-08-16 09:51:41 +08:00
我破解过一个 wasm + js 的前端项目,他就是企图用一个随机生成的字符串来掩饰这是签名串,比较隐蔽,并且把整个签名放到 wasm 里。
不过最终还是破解了,因为
- 他的随机字符串太孤零零了很明显
- 他的签名生成算法太简单了。

对应你的实现,只要脱壳了剩下的都是渣渣。
c2const
2023-08-16 10:14:01 +08:00
1.只要是运行在用户本地的代码,不管啥壳,都可以逆向,看汇编,理清代码逻辑 :(
2.防破解更多的是把功能尽可能放在服务端,然后做访问限制 :)
3.纯本地的功能,怎么防都会有破解版的 :(
4.OP 做的这个软件,比较简单粗暴的方法,强制扫码/手机号之类的登录,才能访问服务器并调 api 就行了,非法访问就封了 :)
c2const
2023-08-16 10:18:52 +08:00
微软现在出 app ,比如手机上的"微软数学",全都是服务器计算,本地 app 只是展示结果和界面布局,不联网就只能用最基础的加减乘除功能,其它函数图像之类都不能用 :)
asm
2023-08-16 10:35:27 +08:00
只能说看到 vmp 直接扔进回收站。。。
streamrx
2023-08-16 10:44:33 +08:00
你做的这个东西 逆向了没什么收益 根本没有人会去逆向的。 用了 vmp 这些就已经很麻烦了 没有那么多人闲起没事做的
wjx0912
2023-08-16 10:46:15 +08:00
不怕被贼偷,就怕贼惦记
lshang
2023-08-16 11:31:43 +08:00
看起来这个工具的用户规模不大,只有少量的自己人使用,核心诉求是 API 不被坏人破解和盗用。

那楼主可以考虑加一个 IP 白名单,只允许放白的 IP 调用 API 。如果怕麻烦就给用户一个申请 IP 放白的接口,然后人工审核,审核通过自动化加白。
yinmin
2023-08-16 11:57:38 +08:00
你从社会工程学角度去考虑这件事情:为每台机器 ID 设置每天的使用上限,可以设得高一些,例如:通常 1 台机器每天几十次调用,你可以设置 1 天 2000 次调用的上限。如果有人投入大量精力去破解,也只能获得 2000 次/机器 ID 的调用,获得太少得不偿失,而你的损失可控。
GeT1t
2023-08-16 11:58:54 +08:00
怕被破解不要思路局限于加强客户端的保护,用一些使用策略从根本上杜绝破解(比如 12306 的候补车票),前面说的 token 加频控已经有很大的攻击门槛了。对于小软件已经非常够了。
pannanxu
2023-08-16 12:07:42 +08:00
试试埋点然后数据分析风控?或者其他第三方的一些行为验证?
yinmin
2023-08-16 12:07:53 +08:00
这个算法“机器信息,时间戳,nonce 生成了一个 sign”是有 BUG 的,没有加入原文的 HASH 值。
a33291
2023-08-16 12:53:00 +08:00
单 vmp 就效果可以了,能搞定 vmp 的不屑于搞你,搞不定 vmp 的更不用担心了.
miaomiao888
2023-08-16 13:34:52 +08:00
腾讯的接口不是本身就有 QPS 限制吗?好像每秒 5 次。
就这个限制适合公开多人使用吗?还是你有开通更高的 QPS ?
kneo
2023-08-16 13:54:11 +08:00
其实最怕的是 ddos 。闲人真的很多。
Borch
2023-08-16 14:11:39 +08:00
@s7964926 vmp 新版的公开没啥分析,放心用,当然是正确使用的前提下,目标算法函数确定是加上保护了就行。
Borch
2023-08-16 14:14:05 +08:00
@s7964926 别听那个 ajaxgoldfish 瞎扯,vmp 把原函数的汇编指令语义都给混淆搞没了,他说”至于 sign 直接 frida 一点一点看你调用然后还原就行了“,笑死个人,小小白在这唬人呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/965643

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX