首页
社区
课程
招聘
[求助]ida中Release编译的lib转化成sig文件提示not ar/coff file
2016-7-10 18:09 10857

[求助]ida中Release编译的lib转化成sig文件提示not ar/coff file

2016-7-10 18:09
10857
大家好,在软件逆向的时间,我有软件的lib文件,希望生成sig文件后导入到ida中方便进行函数识别。
如果软件在编译的时候选择的是Debug版本,可以先从lib中导出obj文件,再根据obj文件使用pcf来生成pat,最后生成sig文件,这个都没有问题。

但是如果软件在编译的时候选择的是Release版本,从lib中导出obj后,使用pcf的时候就提示这个obj不是有效的ar/coff 文件。

现象是如下图如示

这个obj的对比如下图所示

lib就是用的vs2012生成的一个简单的静态lib工程,编译了Debug版本和Release版本,如下所示
Debug&Relase-lib.zip
各位兄弟请不吝指教,

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 28
活跃值: (56)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
逆转录酶 2 2016-7-12 12:49
2
0
把全局优化关了试试,不知道具体什么原因,但是这样做确实有效
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zzycqok 2016-7-12 13:28
3
0
测试的lib关了是可以,只是我要静态反编译别人的软件,他估计是和我现在的lib设置的一样的,因此只能看这种情况下是否有办法了。
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zzycqok 2016-7-26 10:14
4
0
找了一些资料,确实是楼上仁兄讲的全局优化的问题。

C++ 程序正常的代码生成包括三个步骤:
1. 前端,C1, 读取源代码,产生符号表,分析源代码,检查语法正确性,产生某种中间代码(IL)。调用后端。
2. 后端,C2, 代码生成器,读取IL,产生针对CPU的具体代码,代码优化,产生包括实际代码和数据的obj文件。
3. 链接,Linker,读取所有的obj文件和lib文件,建所有的代码和数据合成到最终的.exe可执行文件中。

LTCG - Link-time Code Generation 链接时代码生成
1. 前端C1直接产生 IL 的 obj 文件。不调用C2。
2. Linker读取所有的 IL obj 文件和 lib 文件,调用C2,将所有的 IL 代码塞给C2以产生最终的实际代码。
好处:因为C2可以得到所有的代码,它可以进行更好的代码优化,更好的 inline (跨模块,跨源文件的 inline),和 TLS优化。

并且是没有办法再生成无优化lib的
Yes - one and only one way:  turn off /LTCG and re-compile the source files.  If you need both /LTCG and non-/LTCG versions, you'll simply have to build twice and manage two binary versions of your libraries.

见:https://social.msdn.microsoft.com/Forums/vstudio/en-US/2d3111bd-1267-47d8-9e85-f1b11915f0e8/making-normal-static-libraries-from-ltcg-compiled-object-files?forum=vclanguage
游客
登录 | 注册 方可回帖
返回