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

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

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

5513 次点击
所在节点    程序员
64 条回复
Borch
2023-08-16 14:17:52 +08:00
@picone vmp 是虚拟化汇编指令后再混淆语义,跟脱壳有毛线关系?
Borch
2023-08-16 14:22:50 +08:00
@s7964926 以及想要防我上面说的“加了 vmp 的算法可以通过模拟执行引擎如 unicorn 还原内存环境后直接调用”,把调用 sign 函数所在的函数也给混淆了,就是把调用上下文给混淆了,别给破解者找到不逆算法间接调用 sign 的机会。
ajaxgoldfish
2023-08-16 14:25:10 +08:00
@Borch #40
@Borch #40 看全
nuk
2023-08-16 14:35:10 +08:00
用微信扫码,然后破解啥的东西都让微信承担就好了。
如果本地运行的话,加不加壳没啥意义,反而容易报毒。
Borch
2023-08-16 14:37:15 +08:00
@ajaxgoldfish 看全了。vmp 的难点是指令虚拟化,虚拟化它自己的指令后还可以再混淆指令语义,请你展开说说啥是“至于 sign 直接 frida 一点一点看你调用然后还原就行了,最难得是脱壳”,楼主加 vmp 核心保护的就是 sign 算法,看不懂你这句话。
ajaxgoldfish
2023-08-16 14:40:00 +08:00
@Borch #41 我确实是小小白,但是根据本条回复综合你上条回复我的感觉你认为 vmp 不是壳,其实 vmp 就是壳因为脱了之后偏移量有问题也会崩溃程序(常规意义上)。所以我说直接加壳就行了至于 ”sign 直接 frida 一点一点看你调用然后还原就行了“我下面补充了我眼瞎了没看到 C++看成安卓程序了。
Borch
2023-08-16 14:52:01 +08:00
@ajaxgoldfish 1.脱壳脱不了虚拟化的指令。2.安卓也要逆 so 逆 C++,不懂你说的“没看到 C++看成安卓程序了”。
s7964926
2023-08-16 18:22:32 +08:00
@Borch
@ajaxgoldfish
感谢两位大佬给提供的建议,我都有好好看过好好学习过了
我的核心 sign 代码是进行过 vmp 最新版本的 sdk 加密了,我之前提出的问题其实就是,如果 vmp 不被脱壳,那么我的 sign 算法是不是就是安全的。
ajaxgoldfish
2023-08-16 18:50:20 +08:00
@s7964926 #48 sign 算法要加密调用 sign 的业务也要加上。
ajaxgoldfish
2023-08-16 18:58:19 +08:00
@Borch #47 最后回复老哥一次,op 第一句话就是用 C++写了个小软件,基本没有用 C++写安卓业务的吧。还有*在安卓*中为什么要逆动态库还原 sign 算法?,frida 直接暴露 rpc 接口直接调用你自己的 sign 算法拿到签名就行了,不需知道具体的 sign 算法是啥能用就行。你要说所有的业务都在 so 中那当我放屁就行。
Greatshu
2023-08-16 19:58:43 +08:00
用户规模不大就手动授权,比如一个 QQ 群,那位群友想用就要求他用自己 qq 邮箱注册一个账号,联系 OP 后台授权,提醒不要给别人用,否则以后都用不了,做好限流,完事
实在不行再加上设备 ID
LykorisR
2023-08-16 22:28:00 +08:00
只要真想搞,不计成本的话,任何程序都能被破解
技术上混淆加密需要有,但最有效的办法是将破解成本升高到比购买还高
akira
2023-08-17 01:47:13 +08:00
只要你这东西破解的价值不大,就没啥人会闲着蛋疼去破。何况你是用的现成的接口,真没啥价值。

顺便,vmp 的 大概率现在已经有一键脱壳还原的了。别跳。
s7964926
2023-08-17 04:46:06 +08:00
@akira 愿闻其详,一键脱壳 vmp 虚拟机的流程
s7964926
2023-08-17 04:47:29 +08:00
@yinmin 感谢提示,目前已经把 sign 的生成条件加了一个他要翻译的文本
mmdsun
2023-08-17 07:38:04 +08:00
把你程序做成黑盒调用就行,不用破解。
直接用你的程序生成签名 nonce ,再去调用你接口。

还可以加随机数+时间防止重放,避免上面的情况,但别人可以用防火墙让网络发不出去,拿到 nonce 再调用接口
s7964926
2023-08-17 07:45:58 +08:00
@mmdsun 现在我把翻译的原文也加上了做了 sign
是不是就从如何破解加密算法,变成了如何替换获取到的翻译原文
lizhenda
2023-08-17 09:38:54 +08:00
确实很复杂,学到了
simo
2023-08-17 09:40:53 +08:00
楼上说到了,肯定能能做到,取决于破解收益。
所以把心思放到运营和迭代上就行
xdm1957
2023-08-17 10:09:29 +08:00
已经够了, 破解成本太高. 没人愿意花费那么大的功夫破解调用你接口的. 在加个限流, 提高破解者破解后的使用成本 (让他需要代理 IP). 基本没人去破解.

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

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

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

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

© 2021 V2EX