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进入,发现并不能进入函数内部。
测试情况如上。
IDA Pro分析dll在exe中的表现的更多相关文章
- 恶意代码分析实战四:IDA Pro神器的使用
目录 恶意代码分析实战四:IDA Pro神器的使用 实验: 题目1:利用IDA Pro分析dll的入口点并显示地址 空格切换文本视图: 带地址显示图形界面 题目2:IDA Pro导入表窗口 题目3:交 ...
- C#中用ILMerge合并DLL和exe文件成一个exe文件或者DLL
ILMerge是一个将多个.NET程序集合并到一个程序集中的实用程序.它既可以作为 开源使用,也可以作为NuGet包使用. 如果您在使用它时遇到任何问题,请与我们联系.(mbarnett _at_ ...
- IDA Pro - 如何得到比较清楚的逆向伪代码
原文地址:Question about disassembler 简介 这篇文章介绍了如何在不使用插件的IDA Hex-Rays如何得到比较清晰的伪代码.IDA Hex-Rays功能很强大,只要你提供 ...
- 路由器逆向分析------在Linux上安装IDA Pro
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69665905 01.在Linux系统上安装Linux版本的IDA Pro Linu ...
- IDA Pro 在CSAPP lab2中的使用
在做lab2的时候,偶然的情况下,发现了IDA pro这样一个反汇编工具,总的来说对于lab2这样的小实验读懂代码的大体功能是有作用的,但对于想要具体明白某一条指令的执行过程,又显得不足,到最后还是需 ...
- 其原因可能是堆被损坏,这说明**.exe中或它加载的任何DLL中有Bug
最近在写一个写日志文件的线程时,调用了HeapAlloc/HeapFree 申请/释放堆缓冲内存.调用HeapFree释放有个条件就是,日志的空闲缓冲队列中内存块超过100个.在测试的时候,发现调用H ...
- 中触发一个断点 其原因可能是堆被损坏,这说明 ***.exe 中或它所加载的任何 DLL 中有 Bug
软件中使用了DevComponents.DotNetBar2.dll MessageBoxEx.Show("ddd");运行到这句出现这个错误 : 中触发一个断点 其原因可能是堆被 ...
- 其原因可能是堆被损坏,这也说明 xxx.exe 中或它所加载的任何 DLL 中有 bug
1.代码如下: string src ="abcdabcd"; char* dst = new char[8]; strcpy(dst,src.c_str()); delete[] ...
- dll中使用exe中的变量
注意:输出目录为:Result共享目录 1.exe项目: // EXE.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h" extern" ...
- 皮肤和DLL和图片等项目文件完全整合到exe中
C#开发的程序原生界面实在是太丑了,自己又没有美化天赋,所以只能使用皮肤控件了,网上找到了IrisSkin2,包含一个.dll文件和若干ssk后缀的皮肤文件,代码其实很简单的.但是后来发现个问题,就是 ...
随机推荐
- 即时通讯技术文集(第11期):IM通信格式的选型及Protobuf专题 [共16篇]
为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第11 期. [- 1 -] 如何选择即时通讯应用的数据传输格式 [链接] http://www. ...
- 使用GTD工作法提升效率
前言 近年来随着工作.副业的开展,每天要做的事情越来越多,而且还积攒了很多工作,每天大脑被各种事情充斥着,乱糟糟的,不仅效率很低,还很容易导致焦虑. 为此我一直有在寻找合适的项目管理工具,也看了一些相 ...
- ForkJoin全解2:forkjoin实际工作流程与实现
1.相关概念解释 1.1 "内部"和外部 当一个操作是在非ForkjoinThread的线程中进行的,则称该操作为外部操作.比如我们前面执行pool.invoke,invoke内又 ...
- DICOM-SCP,可以直接使用的SCP(.net framework 4.5)控制台接收端
此程序引用的是Dicom.Core 4.0.8.0,也是最后一版支持部署在.net framework 4.5 或以下环境的.如需要部署在.net4.6.1以上的需要查看另一个文档. 1 using ...
- 转换流:InputStreamReader、OutputStreamWriter
1.转换流涉及到的类:属于字符流InputStreamReader:将一个字节的输入流转换为字符的输入流解码:字节.字节数组 --->字符数组.字符串 OutputStreamWriter:将一 ...
- 使用 SOUI 开发高 DPI 桌面应用程序[转载]
原文:使用 SOUI 开发高 DPI 桌面应用程序_吹泡泡的小猫的博客-CSDN博客 补充说明:soui3以后版本对dpi的支持更完善了,用起来也更简单了. 1 应用程序感知 DPI 变化 在 Win ...
- Q:ORACLE 之无法删除正在连接的用户?
首先用户名必须用单引号引起来且必须大写,如下是失效的 1.查询用户进程 SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='V7HIS_1'; 2.删除 ...
- IDEA新建多模块maven项目
1.new =>projetc=>maven=>,新建完成后删除src目录 2.增加java模块 例:robots2-common 项目根目录就是[robots2-paren ...
- Yarn角色
一.ResourceManager ResourceManager中的调度器负责资源的分配 二.NodeManager NodeManager则负责资源的供给和隔离 ResourceManager将某 ...
- Calcite 获取jdbc连接流程
一.类调用 简介:calcite可以连接各数据源,做查询.可以收口查询权限,查询多引擎需求 二. 获取Connection发送的请求 请求介绍文档:https://calcite.apache.org ...