我们一般写的loader或者自己挖的白程序有时候会弹出一个DOS黑窗口,其实自己的写的话很好规避掉,隐藏掉即可。
但是如果我们挖到一个白程序,也是会弹出一个DOS黑框,卡在那不动得话就很难受,我们又没有源码,不能直接使用如下方式给他规避掉。
FreeConsole();
HWND handos = GetForegroundWindow();
ShoWindow(handos,SW_HIDE);
xxxxxxxxxx int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow);
其实我们除了上面得方式也可以设置Subsystem这个字段,这个字段在可选PE头中,如下微软介绍。
https://learn.microsoft.com/zh-cn/cpp/build/reference/subsystem-specify-subsystem?view=msvc-170
那么我们就可以直接在PE结构中进行更改了。
可选PE头如下:
typedef struct _IMAGE_OPTIONAL_HEADER64 {
WORD Magic;
BYTE MajorLinkerVersion;
BYTE MinorLinkerVersion;
DWORD SizeOfCode;
DWORD SizeOfInitializedData;
DWORD SizeOfUninitializedData;
DWORD AddressOfEntryPoint;
DWORD BaseOfCode;
ULONGLONG ImageBase;
DWORD SectionAlignment;
DWORD FileAlignment;
WORD MajorOperatingSystemVersion;
WORD MinorOperatingSystemVersion;
WORD MajorImageVersion;
WORD MinorImageVersion;
WORD MajorSubsystemVersion;
WORD MinorSubsystemVersion;
DWORD Win32VersionValue;
DWORD SizeOfImage;
DWORD SizeOfHeaders;
DWORD CheckSum;
WORD Subsystem;
WORD DllCharacteristics;
ULONGLONG SizeOfStackReserve;
ULONGLONG SizeOfStackCommit;
ULONGLONG SizeOfHeapReserve;
ULONGLONG SizeOfHeapCommit;
DWORD LoaderFlags;
DWORD NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64;
微软介绍:
https://learn.microsoft.com/zh-cn/windows/win32/api/winnt/ns-winnt-image_optional_header64
使用DIE工具打开EXE。选择高级选项,点击PE结构,找到可选PE头,然后找到Subsystem字段,将右上角得只读取消掉。
然后将Windows CUI更改为Windows GUI即可。
然后我们来看一下效果,没有设置之前:
设置之后,可以看到DOS框已经规避掉了,这样的话你挖到白名单的一些程序或者如果没有源码的。
原文始发于微信公众号(Relay学安全):隐藏DOS黑窗口的一个技巧
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论