实施 DexGuard RASP 设备检查的正确方法

逆向工程 安卓
2021-06-30 13:13:57

我最近遇到了一个受 DexGuard 保护的应用程序。DexGuard 声称提供运行时应用程序自我保护 (RASP),其中包括应用程序混淆和各种运行时篡改检查(反调试器/模拟器/挂钩/重新打包/root 等)。然而,虽然我发现的应用程序被很好地混淆了,但有几个相当明显的问题。例如,设备检查的类型在 DeviceCheck 类文件中进行了描述,每个检查类型都有静态变量(例如 EMULATOR = 1、HOOKED = 5 等)。通过挂钩相关方法并为每个值返回 false,我能够禁用所有检查。

鉴于 DexGuard 声称是企业级 RASP 解决方案,这似乎很容易绕过,所以我想知道这是否是开发人员的配置错误或不正确的实现。我无法在网上找到有关实施指南的任何 DexGuard 文档,因此我希望这里有经验的人能够提供一些帮助。

谢谢!

1个回答

嗯,我认为这是一个糟糕的实现,因为任何其他破解的 dexguard 保护应用程序,其中大多数都需要 root 来实现补丁,即补丁程序等待 DexGuard 完成其工作。这些都是旧情况,更不用说增加的新保护了。不久前我自己破解了一个受 VMP 保护的应用程序。而且作者对重要的函数进行了VMed,没有注意返回值。是这样的

push XXXXX ----->handle
call YYYYY  ----->VM
return value ----> x=registered on server Y=registered on another machine Z=no connection P=error registering

最重要的是,只要有一点调试技巧和现在存在的好工具,如果攻击者能够理解加密算法,他就可以毫无顾虑地内嵌他的补丁。