吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5485|回复: 110
收起左侧

[原创] Bandzip7.40去广告

    [复制链接]
Szeyes 发表于 2026-4-13 10:44
这是根据这位大佬@AkiyamaMIO123 的思路开发的dll
(原帖子:Bandizip 弹窗广告去除 - 吾爱破解 - 52pojie.cn)
使用方法是直接把文件放到Bandizip.exe所在文件夹就行
下面是源码
[C#] 纯文本查看 复制代码
#include <windows.h>
#include <winuser.h>
#include <string.h>

// ==========================
// 1. 全局函数指针
// ==========================
static HWND(WINAPI* pCreateWindowExW)(
    DWORD dwExStyle,
    LPCWSTR lpClassName,
    LPCWSTR lpWindowName,
    DWORD dwStyle,
    int X,
    int Y,
    int nWidth,
    int nHeight,
    HWND hWndParent,
    HMENU hMenu,
    HINSTANCE hInstance,
    LPVOID lpParam
    ) = NULL;

// ==========================
// 2. 广告窗口拦截 Hook 函数
// ==========================
static HWND WINAPI HCreateWindowExW(
    DWORD dwExStyle,
    LPCWSTR lpClassName,
    LPCWSTR lpWindowName,
    DWORD dwStyle,
    int X,
    int Y,
    int nWidth,
    int nHeight,
    HWND hWndParent,
    HMENU hMenu,
    HINSTANCE hInstance,
    LPVOID lpParam
) {
    // 精准拦截 Bandizip 广告窗口
    if (lpWindowName && wcsncmp(lpWindowName, L"BandiViewAdWnd", 14) == 0) {
        TerminateProcess(GetCurrentProcess(), 0);
    }
    return pCreateWindowExW(
        dwExStyle, lpClassName, lpWindowName, dwStyle,
        X, Y, nWidth, nHeight, hWndParent,
        hMenu, hInstance, lpParam
    );
}

// ==========================
// 3. Native API 声明(手动声明,避免头文件冲突)
// ==========================
typedef LONG NTSTATUS;
typedef NTSTATUS(WINAPI* PNtProtectVirtualMemory)(
    HANDLE ProcessHandle,
    PVOID* BaseAddress,
    PSIZE_T RegionSize,
    ULONG NewProtect,
    PULONG OldProtect
    );

typedef NTSTATUS(WINAPI* PNtAllocateVirtualMemory)(
    HANDLE ProcessHandle,
    PVOID* BaseAddress,
    PULONG ZeroBits,
    PSIZE_T RegionSize,
    ULONG AllocationType,
    ULONG Protect
    );

// ==========================
// 4. Inline Hook 核心实现(修复所有参数/宏错误)
// ==========================
static void apihook(void* apiname, void** apiname2, void* apiname3) {
    if (!apiname || !apiname2 || !apiname3) return;

    HMODULE hNtdll = GetModuleHandleA("ntdll.dll");
    if (!hNtdll) return;

    PNtProtectVirtualMemory NtProtectVirtualMemory = (PNtProtectVirtualMemory)
        GetProcAddress(hNtdll, "NtProtectVirtualMemory");
    PNtAllocateVirtualMemory NtAllocateVirtualMemory = (PNtAllocateVirtualMemory)
        GetProcAddress(hNtdll, "NtAllocateVirtualMemory");

    if (!NtProtectVirtualMemory || !NtAllocateVirtualMemory) return;

    SIZE_T size = 16;
    ULONG OldProtect;
    NTSTATUS status;

    status = NtProtectVirtualMemory((HANDLE)-1, &apiname, &size, PAGE_EXECUTE_READWRITE, &OldProtect);
    if (status != 0) return;

    PBYTE addr = NULL;
    SIZE_T memSize = 128;
    ULONG zeroBits = 0;
    // 修复:补全参数 + 修正宏名 MEM_RESERVE
    status = NtAllocateVirtualMemory(
        (HANDLE)-1, (PVOID*)&addr, &zeroBits, &memSize,
        MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE
    );
    if (status != 0) {
        NtProtectVirtualMemory((HANDLE)-1, &apiname, &size, OldProtect, &OldProtect);
        return;
    }

    memcpy(addr, apiname, 12);
    addr[12] = 0xFF; addr[13] = 0x25;
    addr[14] = 0x00; addr[15] = 0x00;
    addr[16] = 0x00; addr[17] = 0x00;
    *(ULONG_PTR*)(addr + 18) = (ULONG_PTR)apiname3;

    PBYTE p = (PBYTE)apiname;
    p[0] = 0x48; p[1] = 0xB8;
    *(void**)(p + 2) = apiname3;
    p[10] = 0xFF; p[11] = 0xE0;

    *apiname2 = addr;

    NtProtectVirtualMemory((HANDLE)-1, &apiname, &size, OldProtect, &OldProtect);
}

// ==========================
// 5. DLL 入口函数(修复 switch 作用域问题)
// ==========================
static BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
    switch (ul_reason_for_call) {
    case DLL_PROCESS_ATTACH: {
        // 修复:加花括号限定作用域,避免变量被 case 跳过
        HMODULE hUser32 = GetModuleHandleA("user32.dll");
        if (hUser32) {
            apihook(
                (void*)GetProcAddress(hUser32, "CreateWindowExW"),
                (void**)&pCreateWindowExW,
                (void*)HCreateWindowExW
            );
        }
        break;
    }
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

uxtheme.7z

4.44 KB, 下载次数: 872, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 34吾爱币 +35 热心值 +28 收起 理由
ydh10120208 + 1 + 1 谢谢@Thanks!
cnsun666 + 1 热心回复!
jsxz445665 + 1 + 1 谢谢@Thanks!
WinstonSheldon + 1 谢谢@Thanks!
qaq332 + 1 + 1 谢谢@Thanks!
ColinChen11 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
103450857 + 1 + 1 谢谢@Thanks!
889_ + 1 + 1 热心回复!
a158788976533 + 1 我很赞同!
hyxxx + 1 + 1 谢谢@Thanks!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
小烽崽崽 + 1 我很赞同!
40aaa + 1 + 1 谢谢@Thanks!
anranleixia + 1 + 1 热心回复!
GS9452 + 1 谢谢@Thanks!
离轩 + 1 + 1 谢谢@Thanks!
0524016 + 1 + 1 我很赞同!
springlu + 1 我很赞同!
amateur150 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
alreShan + 1 谢谢@Thanks!
polk1234004 + 1 热心回复!
DRZH + 1 + 1 谢谢@Thanks!
CIKX + 1 热心回复!
笨笨家的唯一 + 1 + 1 我很赞同!
我村狠出名 + 1 + 1 谢谢@Thanks!
aglaya111 + 1 支持楼主分享!
youngdh + 1 + 1 谢谢@Thanks!
鸭鸭鸭? + 1 + 1 谢谢@Thanks!
anotherNEw + 1 + 1 用心讨论,共获提升!
WOSHIXIAOAI + 1 + 1 谢谢@Thanks!
myc31115 + 1 + 1 我很赞同!
alan521 + 1 + 1 谢谢@Thanks!
thghx + 1 + 1 谢谢@Thanks!
AkiyamaMIO123 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

C沧海笑 发表于 2026-4-13 21:51
感谢分享,下载试用
HUANGHAIFANG 发表于 2026-4-13 21:16
LOVEUUZ 发表于 2026-4-13 18:41
alan521 发表于 2026-4-13 18:23
这个很好,不知道有没有大佬做个打包版本啊!
 楼主| Szeyes 发表于 2026-4-13 10:46
链接是这个https://www.52pojie.cn//forum.php?mod=viewthread&tid=2099162&highlight=Bandizip不知道为什么点击不跳转了
kof2000 发表于 2026-4-13 16:13
酷,我试试!
csdyl0817 发表于 2026-4-13 16:41
以前用过Bandzip
likezqc 发表于 2026-4-13 17:34
真心感谢 有用
wangguan312 发表于 2026-4-13 17:52
感谢分享
thghx 发表于 2026-4-13 18:05
我不知道啥什么习惯了用bandizip,网上也能找到相应的破解,但还是入了正,总归是天天用的东西,后悔也是有些后悔,主要还是不想折腾。
Lammermoor 发表于 2026-4-13 18:33
alan521 发表于 2026-4-13 18:23
这个很好,不知道有没有大佬做个打包版本啊!

确实,弄个打包版本收藏一下,哈哈哈
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-5-19 13:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表