WindowsPE文件格式入门07
提高动手能力的方法,多看别人的代码,自己多写一写,看的多了,见多识广就自然会写了有导入函数就有导入dll,导入函数是不会被优化的.因为无法确定是否会被用,而且也不清楚代码大小
导入表跟静态链接没有关系,静态链接是直接把代码直接链接到可执行文件中,调了动态链接库,就会有导入表,不调就没有
改变节属性后,相同属性的节会自动合并,合并的顺序是按照节名的 ascii 码顺序排序
## C++ 代码后移的方式
```c++
#define NOP10__asm nop __asm nop__asm nop__asm nop__asm nop__asm nop__asm nop__asm nop__asm nop__asm nop
#define NOP100 NOP10NOP10NOP10NOP10NOP10NOP10NOP10NOP10NOP10NOP10
#define NOP1000NOP100 NOP100 NOP100 NOP100 NOP100 NOP100 NOP100 NOP100 NOP100 NOP100
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
NOP10
MessageBox(NULL, _T("hellow"),_T("hellow"),MB_OK);
}
```
!(./mdimg/pe/1656090957425-c2ab394c-4929-4680-8e70-dae37120f039.png)
!(./mdimg/pe/1656090973589-661d7030-a2fb-47e3-be54-84490a2ac605.png)
!(./mdimg/pe/1656090897892-48cbdb28-6715-45ef-95f3-08613e7072c0.png)
向带有附加数据的进程中添加数据(例如 CE)
如果附加数据检查不严格就没事
而且不一定非要加在 exe中 ,也可以把数据放入加载的dll 没有附加数据的dll中
如果上面都不满足,那么就先把最后一个节节拓展,把附加数据放入节中,想要加数据可以再去添加节或者拓展节都可以,注意修改 SizeOfImage,不一定适用于所有进程
判断自己的可执行文件是否被修改了看
用MD5值校验,如果不一样就说被修改了
txt是纯文本文件,没有格式
节表注入
添加节
第一步:添加节数据
!(./mdimg/pe/1656086134273-8275c80f-f510-4b77-a71c-8e2d8179c7db.png)
第二步:添加节数据
!(./mdimg/pe/1656086221449-966a93f6-0aaf-4a73-858a-496188d8b1b5.png)
第三步:文件头中节个数加1
!(./mdimg/pe/1656086805239-b2b6d2ea-953e-42d7-aa17-bd898acb19c2.png)
第四步:修正PE在内存中总大小
!(./mdimg/pe/1656086839912-bf32e8dc-4d3b-412f-9cdc-8048b0bce1de.png)
拓展节
第一步添加节数据
!(./mdimg/pe/1656087025471-0a83db98-3493-48d5-a6ab-9a53973698b2.png)
第二步修正最后一个节的文件和内存大小
!(./mdimg/pe/1656087058533-89d7f9ef-7121-403b-bf95-9fd608026f48.png)
第三步修正PE在内存中总大小
!(./mdimg/pe/1656087119853-300135ca-1c3d-4f24-984f-38146a5b1160.png)
导入表注入
第一步增加节
!(./mdimg/pe/1656087294712-bde5c3c4-3d91-4cce-a0cd-f9160912553e.png)
第二步拷贝源导入表
!(./mdimg/pe/1656087334543-6c2507b4-6c4c-4033-945f-4c5dc2fb2ffe.png)
第三步导入表添加一项
!(./mdimg/pe/1656087384112-d31cbe13-584c-4552-959b-9f42a5aa23ce.png)
第四步数据目录中导入表地址指向新节的导入表
!(./mdimg/pe/1656088035516-107416d4-2fb5-4a79-b906-84caacea9fc4.png)
学习一下!!
页:
[1]