IDA Pro分析dll在exe中的表现

尝试分析隐式加载和显式加载的dll在exe中进行反汇编时的表现。

1. 测试条件

(1)动态库 testdll1 导出函数 int add(int, int) 和 int add2(int, int)

复制代码
 1 #pragma once
 2 
 3 #ifdef MY_LIB_EXPORT
 4 #define MY_LIB __declspec(dllexport)
 5 #else
 6 #define MY_LIB __declspec(dllimport)
 7 #endif
 8  
 9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 
15 MY_LIB int __stdcall add(int a, int b);
16 MY_LIB int __stdcall add2(int a, int b);
17 
18 
19 #ifdef __cplusplus
20 }
21 #endif
复制代码
 

(2)动态库 testdll2 导出函数 int sub(int, int)

复制代码
 1 #pragma once
 2 
 3 #ifdef MY_LIB_EXPORT
 4 #define MY_LIB __declspec(dllexport)
 5 #else
 6 #define MY_LIB __declspec(dllimport)
 7 #endif
 8  
 9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 
15 MY_LIB int __stdcall add(int a, int b);
16 
17 #ifdef __cplusplus
18 }
19 #endif

(3)测试进程

testdll1 隐式加载到测试进程

复制代码
    #pragma comment(lib, "..\\x64\\debug\\testdll1.lib")
    int a = 100;
    int b = 200;
    int c = add(a, b);

testdll2 显式加载到测试进程

复制代码
1     HMODULE hMod = LoadLibrary(TEXT("..\\x64\\debug\\testdll2.dll"));
2     sub_t func = (sub_t)GetProcAddress(hMod, "sub");
3     if (!func)
4     {
5         FreeLibrary(hMod);
6         hMod = NULL;
7     }
8     int d = func(a, b);

2、用IDA Pro打开测试进程

打开后,观察测试进程的导入表如下:

在add函数调用处下断点

在sub函数调用处下断点

启动调试,add调用处按下F7进入(step into),如下所示:

尝试按下几次快捷键d后没有看到汇编代码。

在sub函数调用处按下F7进入,发现并不能进入函数内部。

测试情况如上。

相关推荐
西杭7 个月前
MAC打开IDA Pro意外退出
macos·ida
logiciel8 个月前
汇编代码翻译为abs函数的调用
ida·逆向分析
muyiGin8 个月前
南京大学计算机基础(四)踩坑笔记
ida·gdb·计组·南京大学
怜渠客10 个月前
记一次源码部分丢失后补救过程
ida·逆向·freebasic
剁椒排骨10 个月前
BUUCTF靶场 [reverse]easyre、reverse1、reverse2
网络安全·数据分析·ida·逆向·ctf·reverse·反汇编
杨如画.1 年前
x-zse-96安卓端纯算,魔改AES还原
ida·安卓逆向·arm汇编·x-zse-96·unidbg·白盒aes·魔改aes
dvlinker1 年前
Relocations for this machine are not implemented,IDA版本过低导致生成汇编代码失败
汇编·ida·arm64·汇编代码上下文·ida版本过低·.so动态库文件·c++源码
dvlinker2 年前
哪些软件分析工具需要使用到pdb符号文件?
windbg·pdb符号文件·ida·processexplorer·process monitor·函数调用堆栈·函数变量符号