[远程Call]32位远程多参数带返回调用
(资料图)
解决思路在Windows上可以使用CreateRemoteThread实现远程Call,但是有不带返回值且只能传递一个参数的限制。
核心shellcode将多个参数利用VirtualAllocEx和WriteProcessMemory写入目标程序,再通过此方法注入一段shellcode,通过shellcode完成多参数的调用。
push var_1...push var_nmov eax,function_addr/*如果为 cdcel则需要平栈add esp,count_param*/call eax
实现c++代码#include #include #include #include using namespace std;LPVOID RemoteNew(HANDLE hProcess, PUCHAR data,size_t size){ auto hMem=VirtualAllocEx(hProcess, NULL, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); if (hMem == NULL) { return FALSE; } if (WriteProcessMemory(hProcess, hMem, data, size,NULL) == FALSE) { VirtualFreeEx(hProcess, hMem, 0, MEM_RELEASE); return FALSE; } return hMem;}BOOL RemoteCall( HANDLE hProcess, LPVOID remoteFuncAddr, vector param, bool cdcelCall, bool waitRemoteThread ){ if (remoteFuncAddr == NULL) return FALSE; vector shellcode; //push 结构 for (int i = param.size() - 1; i >= 0; i--)//调用栈是个栈 { if (((UINT)param[i]) <= 255) //小参数可以只传低位 shellcode.push_back(106), shellcode.push_back((UCHAR)param[i]); //push byte else shellcode.push_back(104), shellcode.insert(shellcode.end(), (PUCHAR)¶m[i], (PUCHAR)(¶m[i] + 1)); //push dword } //把addr塞入寄存器 shellcode.push_back(184); //mov shellcode.insert(shellcode.end(), (PUCHAR)&remoteFuncAddr, (PUCHAR)(&remoteFuncAddr + 1)); //eax,addr shellcode.push_back(255),shellcode.push_back(208);//call eax if (cdcelCall) { size_t paramSize = param.size() * sizeof(LPVOID); //cdcel是函数调用后平栈,stdcall是函数自己平 shellcode.push_back(129), shellcode.push_back(196);//add esp shellcode.insert(shellcode.end(), (PUCHAR)¶mSize, (PUCHAR)(¶mSize + 1)); } shellcode.push_back(195);//ret auto shellcodeAddr=RemoteNew(hProcess, shellcode.data(), shellcode.size() * sizeof(UCHAR)); if (shellcodeAddr == NULL) return FALSE; auto hThread=CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)shellcodeAddr, NULL, NULL, NULL); if (hThread == NULL) { VirtualFreeEx(hProcess, shellcodeAddr, 0, MEM_RELEASE); return FALSE; } thread waiter([hThread, hProcess, shellcodeAddr] { WaitForSingleObject(hThread, INFINITE); VirtualFreeEx(hProcess, shellcodeAddr, 0, MEM_RELEASE); DWORD retCode; GetExitCodeThread(hThread, &retCode); cout <<"Ret: " << retCode << endl; }); if (waitRemoteThread) waiter.join(); else waiter.detach(); return TRUE;}int add(int a, int b){ return a + b;}int main(){ char a[] = "hello world"; char b[] = "C++ YES"; //-1是自己 RemoteCall((HANDLE)-1, add, { (LPVOID)1,(LPVOID)3 }, true, true); auto p1 = RemoteNew((HANDLE)-1, (PUCHAR)a, sizeof(a)); auto p2 = RemoteNew((HANDLE)-1, (PUCHAR)b, sizeof(b)); RemoteCall((HANDLE)-1, MessageBoxA, { 0, p1,p2,(LPVOID)64 }, true, true); std::cout << "Hello World!\n"; Sleep(-1);}
实现缺陷目前只能实现32位的远程调用,64位新增了内存的可执行权限,这样注入的shellcode没法执行。
返回值只能接受32位整数,其实实现64位整数和浮点的方法也不复杂,都可以用汇编把对应寄存器的值写到内存里,但是情况比较多,懒得写了。
-
[远程Call]32位远程多参数带返回调用
博客园 2023-08-25
-
方瓜木耳鸡蛋饺子(木耳鸡蛋饺子)
互联网 2023-08-25
-
98红警 下载 98红警
城市网 2023-08-25
-
图知道|因人为干扰数据,绵阳长沙在空气质量排行中垫底
中国青年报客户端 2023-08-25
-
安徽天长:发挥监督治理效能推进移风易俗
人民网-安徽频道 2023-08-25
-
女子无意间发现,这场“探访凶宅”的直播,播的竟是自己家……
中国青年网 2023-08-25
-
全面涨价!奔驰新GLB售31.19-36.79万 动力更强
网上车市 2023-08-25
-
太平洋给予山西汾酒买入评级
每日经济新闻 2023-08-25
-
苹果 iPhone 15 Pro 数据线曝光:长 70cm、功率 150W
IT之家 2023-08-25
-
科技昨夜今晨 0825:多款开屏广告跳过 App 无限期停更
IT之家 2023-08-25
-
[远程Call]32位远程多参数带返回调用
博客园 2023-08-25
-
方瓜木耳鸡蛋饺子(木耳鸡蛋饺子)
互联网 2023-08-25
-
98红警 下载 98红警
城市网 2023-08-25
-
图知道|因人为干扰数据,绵阳长沙在空气质量排行中垫底
中国青年报客户端 2023-08-25
-
安徽天长:发挥监督治理效能推进移风易俗
人民网-安徽频道 2023-08-25
-
女子无意间发现,这场“探访凶宅”的直播,播的竟是自己家……
中国青年网 2023-08-25
-
全面涨价!奔驰新GLB售31.19-36.79万 动力更强
网上车市 2023-08-25
-
太平洋给予山西汾酒买入评级
每日经济新闻 2023-08-25
-
苹果 iPhone 15 Pro 数据线曝光:长 70cm、功率 150W
IT之家 2023-08-25
-
科技昨夜今晨 0825:多款开屏广告跳过 App 无限期停更
IT之家 2023-08-25
-
海上救助“安全网”上线:渔民船靠精准调度 遇险能及时救助
中关村在线 2023-08-25
-
行政监督包括内部监督和外部监督 行政监督包括()
城市网 2023-08-25
-
美团上半年营收近1266亿元 第二季度增速优于第一季度
新京报 2023-08-24
-
杰克逊霍尔央行年会来袭 鲍威尔会说啥?
金融界 2023-08-24
-
【世界说】美媒:美国民主现状岌岌可危 公众不满情绪日益加重
中国日报网 2023-08-24
-
乐陵市市中街道:文明实践“花样”多,暑期生活有“知”有“味”
齐鲁壹点 2023-08-24
-
中信证券:投资者原有交易佣金统一下调 0.00146%
36氪 2023-08-24
-
图数解丨从叛乱到坠机,一图回顾普里戈任人生最后两个月
新京报 2023-08-24
-
小市值宽基指数再添新品 景顺长城国证2000指数增强正在发行 具体是什么情况?
互联网 2023-08-24
-
家长注意!上党区幼儿园招生开始了
凯迪网 2023-08-24
-
临高:蜜柚丰收果飘香 果农收获采摘忙
临高县乡村旅游协会 2023-08-24
-
先睹为快!快来“药博会”探馆……
每日甘肃网 2023-08-24
-
绚烂迷彩增添青春亮色:河南省大学毕业生正在成为新兵主体
海外网 2023-08-24
-
达仁堂:连续3日融资净偿还累计918.11万元(08-23)
东方财富Choice数据 2023-08-24
-
杂蔬肉片汤(对于杂蔬肉片汤简单介绍)
互联网 2023-08-24
-
【刘在石】名牌消费+使用俚语···意外的面貌吸引视线!《借口GO》
哔哩哔哩 2023-08-23
-
月牙小夜曲原唱_月牙小夜曲
互联网 2023-08-23
-
掌管万亿美元的PE巨头来了,黑石正式拿下QDLP资格!
每日经济新闻 2023-08-23
-
处暑下雨是什么预兆 处暑有哪些“知识点” 基本情况讲解
互联网 2023-08-23
-
《小小梦魇3》实机演示&制作人采访:终于能联机了
游民星空 2023-08-23