搜索
bottom↓
回复: 76

Xilinx IP核解密源码

  [复制链接]

出0入0汤圆

发表于 2020-4-21 18:16:32 | 显示全部楼层
我也弄了一个针对使用
`pragma protect key_keyowner = "Xilinx", key_keyname = "xilinxt_2019_02", key_method = "rsa"
这个key加密的ip的解密程序。

看起来xilinx用了个whitebox实现的rsa。。。
我折腾了半天也没解开private key究竟是什么
只能照着xilinx的算法实现了一份。。

回头把代码整理一下发出来

出0入0汤圆

发表于 2020-4-28 00:48:08 | 显示全部楼层
随便生成了一个ip,你瞧瞧看能行不?

回头我整理一下代码,你可以自己解。。。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2020-5-9 18:35:35 | 显示全部楼层
本帖最后由 thxlp 于 2020-5-9 19:21 编辑

这个是这样的。

xilinx用的加密方法是按照标准来的。
以aes-128-cbc为例(大部分都是这个加密方式),
加密的时候先生成一个16字节的session key和一个initialization vector(可以随机生成),用这个session key和initialization vector加密需要被加密的代码(代码需要用pkcs1补齐到16位),
然后再把initialization vector和加密后的结果拼接到一起,做base6 4编码,最终生成的就是data_block的部分。
所以我们能直接从data_block部分提取到initialization vector, 这一步未知的部分就是这个session key。

接下来把这个session key用xilinx自己的rsa密钥的public key加密(也是使用的pkcs1 padding)(这个public key是公开的),加密后的结果一样经过base6 4编码得到的就是key_block部分的数据。

所以我们想要解密的话就是两步走,
1.找到xilinx的private key用它解密key_block,得到session key。
2.再用session key解密data_block得到未加密的原始代码。
======================理论就是这些==============

然而不幸的时候,xilinx不知道从哪个版本开始不再使用openssl的rsa库了,不能直接提取到他的private key究竟是什么了。
我大概的分析了一下,xilinx可能是使用了一个white-box的rsa算法(所谓white-box就是把key集成到算法里面,让人没有办法从内存里面抓到key是什么),
幸运的时候,虽然xilinx加密解密的那个dll文件加了壳,但是壳很简单,虽然那个dll使用了各种反跟踪反调试的手段,但是手段都比较初期直接,
最重要的时候,他的加密解密的关键函数完全没有使用花指令也没有插入反跟踪反调试一类的代码,干干净净的。
目前我就是直接把他的加密解密函数照着实现了一遍。
=========================
如果想手动做一次的话,那就安装下面的步骤来就行。

xilinx的加密函数解密函数都在libisl_iostreams.dll这个文件里面。
首先给他脱个壳(也不需要脱完壳之后还能再运行),所以直接用个内存dump工具dump一份出来就行了。
然后分析他,找到关键的rsa加密解密的函数,然后上调试器(我习惯用windbg)。

上调试器之前要对付一下他的反调试手段,
xilinx大概的反调试手段有这么几个(这个在dump出来那个dll里面很容易就能发现),都是同一个套路,
int 3,int 2d,illegal instruction, invalid handle, access violation这些让调速器直接忽略就行。
剩下三个分别是,
用setthreadcontext来清除硬件断点,用ntqueryinformationprocess来判断debugobject,用peb->BeingDebugged来判断是否有debugger,
前面两个都到对应的win32 api上放条件断点跳执行,直接返回,最后一个一次性修改peb就行了。

剩下的就很直接了。。找到他的算法和他这个算法使用的数据照着实现一份。

出0入0汤圆

发表于 2020-5-9 19:21:01 | 显示全部楼层
get500wan 发表于 2020-5-9 18:42
感谢楼上的分享,session key只有16位?暴力穷举攻击一下,似乎也不是很大的计算量。 ...

哦。笔误,16字节
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 12:04

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表