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的安装目录中找到。
lib文件反汇编的更多相关文章
- 缺少.lib文件导致的Link2019 解决方案汇总
环境Vs2015, Win10 添加lib的方法在末尾 下面的错误都是我在写Direct3D程序中遇到的, 记下来方便查找 4.ws2_32.lib 3. version.lib _GetFil ...
- .lib文件 .h文件 .dll文件
.lib代表的是静态数据连接库,在windows系统中起到链接程序和函数的作用,存放的是函数的是函数调用的信息,是obj文件的集合.相当于linux中的.a或.0. .so文件.lib文件是不对外公开 ...
- dll,lib文件的导入
这里介绍了两种方式调用,不过我一般用的是第一种,比较方便. 1动态库函数的调用,可以采用静态链接的方式 ,主要步骤如下: 1) 包含DLL中导出的头文件. 2) 采用#pragma comment(l ...
- Idea 添加lib文件夹,并添加至项目Libary
在WEB-INF文件夹下新建lib文件夹,在lib文件夹上右键选择Add as Libary...,然后填写library名称,选择作用级别,选择作用项目,OK 注意:lib文件夹下需要有jar包后才 ...
- Android Studio 导入外部lib文件
Android Studio 导入外部lib文件 1.将jar包放入Module里的lib文件夹中.(自己创建lib文件夹) 2.在project选中jar包点击右键"Add as li ...
- Keil C51里面lib文件生成和调用方法
一.包含关系 LCD1602.C里面包含LCD1602.H LCD1602.H的文件格式 二.设置生成lib文件 三.Lib文件调用 添加lib文件对话框 添加后的lib文件 呵呵^_^,这样就可以删 ...
- LIB文件和DLL文件的作用
(1)lib是编译时需要的,dll是运行时需要的.如果要完成源代码的编译,有lib就够了.如果也使动态连接的程序运行起来,有dll就够了.在开发和调试阶段,当然最好都有.(2)一般的动态库程序有lib ...
- 关于vs的lib文件和dll文件
一.LIB文件概念 一个lib文件是obj文件的集合.当然,其中还夹杂着其他一些辅助信息,目的是为了让编译器能够准确找到对应的obj文件 二.与DLL的区别 (1)lib是编译时需要的,dll是运行时 ...
- VS怎样创建和使用lib文件
假设你当前正在使用vs写了一个project,那么你想如今就生成一个Lib文件,那么能够直接在"项目属性"上进行改动i 项目属性->配置属性->常规->配置类型中 ...
随机推荐
- (13/24) css进阶:自动处理css3属性前缀
什么是属性前缀 为了浏览器的兼容性,有时候我们必须加入-webkit,-ms,-o,-moz这些前缀.目的就是让我们写的页面在每个浏览器中都可以顺利运行. 例如: transition: width ...
- WINRAR 自解压脚本命令及变量
自解压脚本命令 Path=d:\ ;绝对路径 ;Path=.\在当前文件夹中创建 ;Path=在“Program Files”中创建 ;在当前文件夹创建,无语句 Setup=释放后运行 Presetu ...
- Spring boot 执行jar文件 方式
项目jar包名wxo.jar 清理,打包,跳过测试(不测试) mvn clean package -Dmaven.test.skip=true 后台执行(默认环境) nohup java -jar w ...
- as3 运算与检查String 是否能够正确转换成数 值
如果忘了对一个Number 型变量初始化,那么这个变量参与的任何数学运算的结果都是NaN:如果最终结果赋值给有声明类型的变量,那么为该变量的默认值(仅限uint ,int). var a:Number ...
- 基于OpenGL编写一个简易的2D渲染框架-13 使用例子
这是重构渲染器的最后一部分了,将会给出一个 demo,测试模板测试.裁剪测试.半透明排序等等: 上图是本次 demo 的效果图,中间的绿色图形展现的是模板测试. 模板测试 void init(Pass ...
- hibernate自带的注解和jpa注解的冠希
hibernate是实现了JPA规范,在我们使用hibernate框架的时候,我们引入了hibernate3或者4这个核心包.hibernate-jpa-2.0-api-1.0.0.Final.jar ...
- 概率论与数理统计 Q&A:
--------------------------------- 大数定律:大量样本数据的均值(样本值之和除以样本个数),近似于随机变量的期望(标准概率*样本次数).(样本(部分)趋近于总体)中心极 ...
- Java Thread.interrupt interrupted
Java Thread.interrupt @(Base)[JDK, 线程, interrupt] 原文地址,转载请注明 下面这个场景你可能很熟悉,我们调用Thread.sleep(),conditi ...
- springboot 使用的配置
1,控制台打印sql logging: level: com.sdyy.test.mapper: debug 2,开启驼峰命名 mybatis.configuration.map-underscore ...
- js实现jquery函数animate动画效果
<script> function animate(obj, json, interval, sp, fn) { clearInterval(obj.timer); function ge ...