c和c++相关笔记

前言

多线程卷起来,要把理论落实到实践中去,一点点积累起来逆向的基础,一点点学习和杀软对抗,迟早有一天我也能成为re大佬。这篇文章主要记录一下学习隐藏导入表的学习记录。

正文

c编译环境搭建

环境搭建到此为止

学习笔记

隐藏User32.dll导入表

隐藏前的源码

1
2
3
4
5
6
7
8
9
#include<stdio.h>
#include<Windows.h>

int main()
{
printf("hello world\n");
MessageBox(0, TEXT("hello world"), 0, 0);
return 0;
}

隐藏后的源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<Windows.h>

typedef int(WINAPI * pMessageBox) (

HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);

int main()
{


printf("hello world\n");
pMessageBox MyMessageBox = (pMessageBox)GetProcAddress(LoadLibrary("User32.dll"), "MessageBoxA");
MyMessageBox(0, TEXT("hello world"), 0, 0);
return 0;
}

首先查看GetProcAddress的文档,可以直接在参考链接3进行搜索,其他api也可以在里面搜索,不做过多赘述。

可以看到GetProcAddress这个函数需要传入两个参数,向我这样的初学者可能不太理解,直接看官方给的例子:

可以看到首先使用typedef定义了一个类似结构体的东东。

上面已经说的很详细了,这里就不再解读了。

MessageBox的语法上图已经给出来了。通过上面的一些微软的官方文档,就很容易理解上述隐藏user32.dll的代码是啥意思了,亦可以照猫画虎隐藏其他dll文件。

参考链接


c和c++相关笔记
https://blog.njcit.me/2023/01/16/写代码/c和c++相关笔记/
作者
ccadmin
发布于
2023年1月16日
许可协议