×

vc静态库资源文件

vc静态库资源文件(c 静态库)

admin admin 发表于2023-04-05 18:32:10 浏览65 评论0

抢沙发发表评论

本文目录一览:

如何制作vc静态链接库的IDA SIG文件

很多天前,有人提出这个问题。当时没有想到用lib.exe,以为自己要重新发明一个轮子ar2.exe,才可能解析出MS LIB文件中的OBJ文件。今天又看见有人发贴,再次dig一下,不过如此...

下面是在命令行上制作的过程,环境是WinXP+NTFS+VS2003,在我的机子上运行无误。破折号之间的引用都是命令行。

附件是制作好的SIG文件,可以准确地解析出printf()函数,当然还有其它很多很多库函数。

Step 1:

将libc.lib, libcd.lib, libcmt.lib, libcmtd.lib从原文件夹下复制过来。

For:

避免在命令行上输入过长的路径

Step 2:

-----------------

set path = %path%;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin

set path = %path%;C:\Program Files\IDA\addons\Flair.v5.20\bin

-----------------

设置要调用的程序的路径,在你的机子上不一定如此

Step 3:

-----------------------------

for %i in (*.lib) do md %i.fdr

-----------------------------

For: 新建存放对象文件的文件夹

Step 4:

-----------------------------

cd v:\libc.lib.fdr

for /F "skip=3" %i in ('link.exe -lib /list ..\libc.lib') do link.exe -lib /extract:%i ..\libc.lib

cd v:\libcd.lib.fdr

for /F "skip=3" %i in ('link.exe -lib /list ..\libcd.lib') do link.exe -lib /extract:%i ..\libcd.lib-vc静态库资源文件

cd v:\libcmt.lib.fdr

for /F "skip=3" %i in ('link.exe -lib /list ..\libcmt.lib') do link.exe -lib /extract:%i ..\libcmt.lib-vc静态库资源文件

cd v:\libcmtd.lib.fdr

for /F "skip=3" %i in ('link.exe -lib /list ..\libcmtd.lib') do link.exe -lib /extract:%i ..\libcmtd.lib-vc静态库资源文件

-----------------------------

For: 依次提取libc.lib, libcd.lib, libcmt.lib, libcmtd.lib中的所有对象文件。

Step 5:

--------------------------

for %i in (.\libc.lib.fdr\*.obj) do pcf.exe -g0 %i

for %i in (.\libcd.lib.fdr\*.obj) do pcf.exe -g0 %i

for %i in (.\libcmt.lib.fdr\*.obj) do pcf.exe -g0 %i

for %i in (.\libcmtd.lib.fdr\*.obj) do pcf.exe -g0 %i

-------------------------

pcf.exe -g0 .\libc.lib.fdr\*.obj

pcf.exe -g0 .\libcd.lib.fdr\*.obj

pcf.exe -g0 .\libcmt.lib.fdr\*.obj

pcf.exe -g0 .\libcmtd.lib.fdr\*.obj

-------------------------

For: 由.obj文件生成.pat文件。为了避免pcf.exe在执行的过程中处理非COFF文件时中断、出现提示信息“is not ar/coff file\npress enter to exit”,加上参数"-g0"。-vc静态库资源文件

Step 6:

-------------------------

sigmake -n"VC7 Static Lib (ST/MT Rel/Dbg) By TnTTools" libc.lib.fdr\*.pat+libcd.lib.fdr\*.pat+libcmt.lib.fdr\*.pat+libcmtd.lib.fdr\*.pat vc7libc-vc静态库资源文件

See the documentation to learn how to resolve collisitions.

: modules/leaves: 9021136/3610, COLLISIONS: 2690

-------------------------

sigmake -n"VC7 Static Lib (ST/MT Rel/Dbg) By TnTTools" libc.lib.fdr\*.pat+libcd.lib.fdr\*.pat+libcmt.lib.fdr\*.pat+libcmtd.lib.fdr\*.pat vc7libc-vc静态库资源文件

--------------------------

For: 转化成SIG文件vc7libc.sig,在这里我把四个静态库文件放在一起,当然你可以分开放。通过第一次运行sigmake,知道有冲突存在。手工编辑.EXE文件后再次运行sigmake,生成vc7libc.sig。见附件。-vc静态库资源文件

[举例]

使用前

.text:00402A03 push offset aUsage ; " Usage: \n"

.text:00402A08 call sub_403772

.text:00402A0D add esp, 4

.text:00402A10 push offset aHashH ; " hash -h\n"

.text:00402A15 call sub_403772

.text:00402A1A add esp, 4

使用后

.text:00402A03 push offset aUsage ; " Usage: \n"

.text:00402A08 call _printf

.text:00402A0D add esp, 4

.text:00402A10 push offset aHashH ; " hash -h\n"

.text:00402A15 call _printf

.text:00402A1A add esp, 4

TnTTools

The Art Of Reverse Engineering

Enjoy it.

注意,我在这里讨论的仅是一种很特别的情况:VC静态库文件libc.lib, libcmt.lib。原因起源于论坛上网友的一个疑问。如果直接调用pcf.exe处理这两个文件会遇到问题。

没有必要编写什么程序来包裹它,一是它根本不是万能的SIG制作流程,在实际中,各种情况都有可能遇到;二是我们需要了解CONSOLE下STDOUT的各种输出信息(大部分人不感兴趣);三是自动处理EXC后的手工编辑必不可少(至少在我看来如此)。-vc静态库资源文件

转载,仅供参考,祝你愉快,满意请采纳。

VC2008 如何添加静态库连接文件

如果不用#pragma comment指定,给工程添加依赖的库:项目-属性-链接器-输入-附加依赖项

请问vc中如何使用静态库的资源

“If you add an rc file to a static library, you may experience difficulties due to the limitation that only one rc file may be present in a Dll or Exe. This problem may be overcome by including the library's .rc file into the parent project's .rc file.” (如果你想为一个静态库添加资源文件,你会遇到困难。因为在DLL或EXE中只能存在一个资源文件。你可以通过将静态库的资源文件加入到你自己的工程资源文件中来解决这个问题。)-vc静态库资源文件

首先:选择 view —— Resource Includes

在Resource Includes对话框中,在Read-only symbol directives中添加资源头文件,在Compile-time directives中添加资源文件

再就是添加导入的资源文件目录,因为资源文件中一般是使用的相对路径。

Project —— Settings, 选择Project Settings对话框中的Resources, 在Additional resource Include directories中添加导入的资源文件目录。-vc静态库资源文件

VC++如何链接静态库(lib)

有两种方法:

1:在程序头部加上:

#pragma

comment(lib,

"xxx.lib")不须要加分号结束。

2。工程--设置--连接--对像/库模块中加入那个lib

如何在VC++中强制引用静态库里的所有全局变量

静态库中包含另外一个静态库方法 : 1、compile sources 放写好的.m文件,这些文件会打入静态库中。 2、Link Binary With Libraries 需要链接的库文件,这里就可以将需要引用的库文件放入。这些文件也会打包到静态库中。-vc静态库资源文件