本帖最后由 xiao-bai-shu 于 2024-5-18 18:32 编辑
破除 PrivateAccess 硬件限制
前言
PrivateAccess 是一款用来保护 SanDisk USB Disk 上的数据的便携保险箱软件,它的前身是 SecureAccess。PrivateAccess 加密的文件可以在 Windows、macOS、Android(使用 SanDisk Memory Zone)、iOS(使用 iXpand® Drive App)上查看。但是,它仅能用于 SanDisk 系列产品,不能用于其他品牌存储设备。在这篇文章里,将尝试解除 PrivateAccess 对硬件的限制。
准备工作
- PrivateAccess(本文使用的版本为 v6.4.9,附件有提供)
- ExeInfo PE
- UPXShell
- x64dbg
过程
- 尝试在非 SanDisk 品牌设备上运行 PrivateAccess,发现有如下信息框:
接下来,根据提示“This application only runs on a SanDisk flash drive”,尝试寻找判断函数。
- 使用 x64dbg 调试 PrivateAccess,运行至弹出信息框,右键 CPU 窗口,搜索 --> 当前模块 --> 引用(或直接 Ctrl + D),查找该字符串,可以定位到
00007FF65BD3E3BF 。
- 在 CPU 窗口向上追溯,可以看到一个修改 ZF 标志位的指令
test al,al 和紧跟着的 00007FF68734E3AE jne privateaccess-win.7FF65BD3E46A ,猜测是判断指令。于是在 jne 行打硬件断点,重新运行并在断点处设置 ZF 标志位为 0(方法:双击 ZF: 1)
此时继续运行,可以发现出现了“正在检查更新...”的窗口。
- 因此,我们可以尝试将
jne 改为jmp (选中行右键汇编或直接按下 Space 键,推荐选中 NOP 填充)。尝试应用补丁时,发现无法补丁。
- 没错。调试之前我们忘了一个重要步骤:脱壳。
用 ExeInfo PE 查一下,发现仅仅是个 UPX 壳,所以直接用 upx -d privateaccess-win.exe,脱掉 UPX 壳,然后再重复以上步骤,找到 00007FF68734E3AE jne privateaccess_unupxed.7FF68734E46A ,改成 jmp 之后点击文件 --> 补丁,这时就可以顺利地保存文件了。
结语
从此,我的联想闪电鲨也用上了 SanDisk 的 PrivateAccess。
更新:PrivateAccess v6.4.10
PrivateAccess v6.4.10 给核心组件套了一层壳,使用PrivateAccessMonitor.exe 守护进程提供了额外的安全性,这也导致了解除限制的困难。
当用 x64dbg 调试时,即使打开管理员模式进程也会自动脱离,在任务管理器看到主进程已经脱离了调试器,此外还有一个守护进程。
在运行目录,可以发现隐藏文件夹
│
└─WDPA
│ PrivateAccessMonitor.exe
│
└─Temp
PrivateAccess_win.exe
其中,PrivateAccess_win.exe 便是主程序(附件中PrivateAccess_win_v6.4.10_Core.exe )。脱掉 UPX 壳后,剩余过程与前一个版本相同。
这一次找到的地址是
[Asm] 纯文本查看 复制代码 00EC1A06 | 0F85 A0000000 | jne privateaccess_win_unpacked.EC1AAC |
改成jmp 直接补丁,成功解除限制。
这个工作不算是破解,仅仅是解除限制,所以上传了修改成品和文章截图。如果管理介意的话,我会立刻将附件删除。
破除 PrivateAccess 硬件限制.txt
(60 Bytes, 下载次数: 77)
|