在静态库的情况下,只需在静态库上运行名为 incore_macho 的可执行文件,指纹就会被检出。
这并不完全正确。您不能将 FIPS 指纹嵌入到静态库中,因为代码和数据将在最终链接到可执行文件期间重新定位。您可以在可执行程序或共享对象中嵌入指纹,因为它们已经执行了最终链接。
在动态库的情况下,当我让 xcode 使用以下输出在 dylib 上运行 incore_macho 时出现故障
OpenSSL 基金会对此进行了修复。这是允许对 dylib 进行 incore 处理所需的更改。修改incore_macho.c
如下:
第 530 行附近:
else if( !(header->filetype == MH_EXECUTE || header->filetype == MH_DYLIB) )
{
fprintf(stderr, "%s is not a mach-o executable file "
"(filetype %d, should be MH_EXECUTE or MH_DYLIB)\n",
inFile->filename, header->filetype);
return -1;
}
第 690 行附近:
else if( !(header->filetype == MH_EXECUTE || header->filetype == MH_DYLIB) )
{
fprintf(stderr, "%s is not a mach-o executable file "
"(filetype %d should be MH_EXECUTE or MH_DYLIB)\n",
inFile->filename, header->filetype );
}
就是这样......任何你找到测试的地方MH_EXECUTE
,也允许MH_DYLIB
。
或者,incore_macho.c
从Github下载更新。他们的更新incore_macho.c
还包括对 ARMv7 的支持。