开启邀请码注册中,禁止灌水!发现一次永久禁言

墨客安全网

 找回密码
 立即注册

墨客安全网-新手入门指南 常见问题及帮助 | 做任务赚墨币币 新人报道 | 悬赏问答| 墨币充值| 帖子举报

墨客安全网-论坛精华合集 墨客安全网 -精华合集 之 速成之路 原创精品 | 加入墨客Vip | Vip工具| Vip教程

墨客安全网-进阶技术学习区 软件/工具| 社工专区 | 入侵检测| 技术文章 动画教程 | 编程交流| 免杀更新 | 程序源码

[悬赏公告] - 严查灌水,打造一个无水论坛,从即日起.请大家互相监督,发现恶意灌水的,请发贴举报,核实后会给予5-10的墨币奖励。
[官方公告] 从今日起所有会员发布工具必须到审核板块进行审核,如有违反永久禁言处理!
 [招聘招聘]-招聘各方面给力版主,要求每日发帖不少于3贴,每天在线时间6个小时以上,具体福利和待遇联系TG客服或者在线管理员
[官方公告]1.发现网盘下载地址失效!可以发贴举报 审核证实后给予奖励10-20墨币。2.即日起!不管是谁发贴!都不能带QQ群 已及个人QQ。个人网站,发现后严格处理。
[官方业务]-加入墨客安全网Vip,圆你日抓千鸡梦,各种精品教程,免杀远控,压力测试等你拿,期待各位会员的加入,即可享受众多福利!【官方公告】论坛所有广告均为商业行为,需要交易的请尽量走担保程序,所有因广告产生的任何纠纷请私下解决【站外广告】收灰产肉鸡!拿来换钱!不要国内肉鸡。可合作可包养!爱我中华!!联系方式TG:@rouji8888【站外广告】渗透大佬来接单。长期包养!保底后出金5 5分!只搞国外灰产!爱我中华!飞机:@rouji8888
【站外广告】大量收购黑灰飞机肉鸡 有的联系批量拿

高价收色刷 刷单 兼职 菠菜肉鸡

联系tg

@seeok9

【官方业务】精品广告位招租,需要请联系官方TG客服【官方业务】精品广告位招租,需要请联系官方TG客服【官方业务】精品广告位招租,需要请联系官方TG客服
查看: 68|回复: 0

[病毒木马知识] 【免杀】.data段隐藏

[复制链接]
  • TA的每日心情
    擦汗
    2024-12-19 20:36
  • 签到天数: 27 天

    连续签到: 2 天

    [LV.4]偶尔看看III

    168

    主题

    132

    回帖

    3675

    积分

    UID
    4
    威望
    899 (点)
    主题
    168 (帖)
    精华
    0 (帖)
    贡献
    151  (次)
    墨币
    1426  (枚)
    活跃
    740  (点)
    担保币
    0  (枚)
    注册时间
    2015-6-23
    最后登录
    2024-12-19
    发表于 2024-11-29 13:39:14 | 显示全部楼层 |阅读模式
    一般情况下,C/C++程序中的字符串常量会被硬编码到程序中(.data段,也就是数据段),尤其是全局变量最容易被定位到

    #include <stdio.h>

    char global_string[] = "Just A Test Stings!";

    int main() {
        printf("%s\n", global_string);
    }

    在C++中利用重载运算符
    C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载

    这里需要使用重载运算符来方便我们编程:重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表

    程序结构

    BadString.h

    #pragma once
    #include <iostream>
    #include <string>
    #include <windows.h>

    class BadString {

    protected:
      DWORD dwStrLength = 0;
      std::string szOutStr;
      std::string Base64decode(std::string szBase64String, LPDWORD lpdwLen);
    public:
      BadString(std::string szInStr);
      operator std::string();
      ~BadString();
    };

    BadString.cpp

    #include "BadString.h"
    #pragma comment(lib, "crypt32")

    std::string BadString::Base64decode(std::string szBase64String, LPDWORD lpdwLen)
    {
      DWORD dwLen;
      DWORD dwNeed;
      PBYTE lpBuffer = NULL;
      dwLen = szBase64String.length();
      dwNeed = 0;
      CryptStringToBinaryA(szBase64String.c_str(), 0, CRYPT_STRING_BASE64, NULL, &dwNeed, NULL, NULL);
      if (dwNeed)
      {
        lpBuffer = new BYTE[dwNeed + 1];
        ZeroMemory(lpBuffer, dwNeed + 1);
        CryptStringToBinaryA(szBase64String.c_str(), 0, CRYPT_STRING_BASE64, lpBuffer, &dwNeed, NULL, NULL);
        *lpdwLen = dwNeed;
      }
      return std::string((PCHAR)lpBuffer);
    }

    BadString::BadString(std::string szInStr)
    {
      this->dwStrLength = szInStr.length();
      this->szOutStr = this->Base64decode(szInStr, &this->dwStrLength);
    }

    BadString::operator std::string()
    {
      return this->szOutStr;
    }

    BadString::~BadString()
    {
    }
    main.cpp
    #include "BadString.h"

    int main() {
      std::cout << std::string(BadString("SGVsbG8gV29ybGQK")) << std::endl;
    }

    经过隐藏后在.data 段是找不到输出的字符,但是在.rdata 段还能找到base64后的字符串内容









    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    新人必看帖,如何快速赚取墨币,了解墨客安全网论坛版规,等等...( 点我查看

    如果你在论坛悬赏问答求助问题,并且已经从坛友或者管理的回复中解决了问题,请在帖子内点击(已解决)

    发帖求助前要善用 论坛搜索 功能,如果搜不到可以试试,论坛顶上的 百度站内搜索 - 纵横站内搜索 那里可能会有你要找的答案;

    如果发现论坛有灌水帖、下载地址失效帖、后门帖、广告帖、工具不能正常使用、都可以去 举报版块 发帖举报,核实给予退回墨币+额外的墨币奖励哦;
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
    2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
    3、每个贴内连续回复请勿多余3贴,每个版面回复请勿多余10贴!
    4、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!

    关闭

    站长推荐上一条 /1 下一条