lib文件反汇编

运行vc命令行,输入:dumpbin /disasm xxx.lib > test.txt 

 

 

lib就是obj文件打包起来的,可以用lib.exe解出来,下面是vc环境下的操作,其他环境,看命令行帮助就可以了。

lib /list xx.lib 列出lib里所有obj文件名,我这里如下
。。。。。很多省略
lib/err/err.obj
lib/dict/dictll.obj
lib/coreDump/coreDumpWin32.obj
lib/config/preference.obj
lib/config/configUL.obj

找到你关注的obj,这里选择configUL.obj,然后 lib /EXTRACT:lib/config/configUL.obj xx.lib
解出configUL.obj, 然后把obj拖入IDA,我这里是ida5.5,在函数列表里找你要调用的函数,然后逆之

_Config_GetString       .text 00000068 00000039 R . . . B . .
_Config_GetBool         .text 000000B8 00000039 R . . . B . .
_Config_GetLong         .text 00000108 00000039 R . . . B . .
_Config_GetInt64        .text 00000158 0000003D R . . . B . .
_Config_GetTriState     .text 00000198 00000039 R . . . B . .
_Config_GetDouble       .text 000001E8 00000041 R . . . B T .
_Config_GetPathName     .text 00000288 00000039 R . . . B . .
_Config_NotSet          .text 000002C4 00000035 R . . . B . .
_Config_GetLongPlain    .text 000003B0 00000015 . . . . . . .
_Panic                  UNDEF 000003D0 00000004 R . . . . . .
_Preference_GetString   UNDEF 000003D4 00000004 R . . . . . .
_Str_Vsnprintf          UNDEF 000003D8 00000004 R . . . . . .
_Preference_GetBool     UNDEF 000003DC 00000004 R . . . . . .
_Preference_GetLong     UNDEF 000003E0 00000004 R . . . . . .
_Preference_GetInt64    UNDEF 000003E4 00000004 R . . . . . .
_Preference_GetTriState UNDEF 000003E8 00000004 R . . . . . .
_Preference_GetDouble   UNDEF 000003EC 00000004 R . . . . . .
_Preference_GetPathName UNDEF 000003F4 00000004 R . . . . . .
_Preference_NotSet      UNDEF 000003F8 00000004 R . . . . . .


我这里随便选择一个函数 _Config_GetString,很小的函数,呵呵,方便说明
.text:00000068 _Config_GetString proc near
.text:00000068
.text:00000068 var_400         = byte ptr -400h
.text:00000068 arg_0           = dword ptr  8
.text:00000068 arg_4           = dword ptr  0Ch
.text:00000068 arg_8           = byte ptr  10h
.text:00000068
.text:00000068                 push    ebp
.text:00000069                 mov     ebp, esp
.text:0000006B                 mov     ecx, [ebp+arg_4]
.text:0000006E                 sub     esp, 400h
.text:00000074                 lea     eax, [ebp+arg_8]
.text:00000077                 push    eax
.text:00000078                 push    ecx
.text:00000079                 lea     edx, [ebp+var_400]
.text:0000007F                 push    400h
.text:00000084                 push    edx
.text:00000085                 call    _Str_Vsnprintf
.text:0000008A                 mov     ecx, [ebp+arg_0]
.text:0000008D                 lea     eax, [ebp+var_400]
.text:00000093                 push    eax
.text:00000094                 push    ecx
.text:00000095                 call    _Preference_GetString
.text:0000009A                 add     esp, 18h
.text:0000009D                 mov     esp, ebp
.text:0000009F                 pop     ebp
.text:000000A0                 retn
.text:000000A0 _Config_GetString endp

这个函数很简单,一看就知道功能了,格式化一个buffer,构建一个字符串返回,
下面是是直接f5后修改的结果
int __cdecl Config_GetString(int a1, int a2, char *buf)
{
  char buffer[0x400];
  Str_Vsnprintf(buffer, sizeof(buffer), a2, buf);
  return Preference_GetString(a1, &v4);
}

这种手法,搞个10个,8个的函数还行,多了会死人的,最好看了关键思路自己写个来的更快

 

 

 

lib.exe可在vs的安装目录中找到。

 

posted on   lydstory  阅读(4025)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示