挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运IOS签名/udid证书出售/送证书加群1040456405 ██【我要租此广告位】██
... .
查看: 3456|回复: 4
打印 上一主题 下一主题

[交流] 为什么代码注入多次,目标程序的内存会越来越大

[复制链接]

86

积分

25

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
61
海币
1987
交易币
0
跳转到指定楼层
楼主
发表于 2015-4-18 19:59:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


测试代码:
目标程序A

#include<iostream>
#include<Windows.h>
using namespace std;
void dg(){
}
int main(int i){
    cout<<"函数地址:"<<(void *)dg<<endl;
    cout<<"进程ID:"<<GetCurrentProcessId();
    cin>>i;
    return 0;
}
注入的程序B

#include <iostream>
#include<stdio.h>
#include<windows.h>
using namespace std;
//**************************************************************************************
//函数名:InfusionFunc
//功能  :封装远程注入的函数
//参数 1:进程ID
//参数 2:被注入函数指针<函数名>
//参数 3:参数
//参数 4:参数长度
//**************************************************************************************
void InfusionFunc(DWORD dwProcId,LPVOID mFunc, LPVOID Param, DWORD ParamSize)
{
    HANDLE hProcess;//远程句柄
    LPVOID mFuncAddr;//申请函数内存地址
    LPVOID ParamAddr;//申请参数内存地址
    HANDLE hThread;    //线程句柄
    DWORD NumberOfByte; // 返回值
    //打开被注入的进程句柄
    //PROCESS_ALL_ACCESS
    hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcId);
    //申请内存
    mFuncAddr = VirtualAllocEx(hProcess,NULL,128,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
    ParamAddr = VirtualAllocEx(hProcess,NULL,ParamSize,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
    //写内存
    WriteProcessMemory(hProcess,mFuncAddr,mFunc,128, &NumberOfByte);
    WriteProcessMemory(hProcess,ParamAddr,Param,ParamSize, &NumberOfByte);
    //创建远程线程
    hThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)mFuncAddr,
                                 ParamAddr,0,&NumberOfByte);
    WaitForSingleObject(hThread, INFINITE); //等待线程结束
    //释放申请有内存
    VirtualFreeEx(hProcess,mFuncAddr,128,MEM_RELEASE);
    VirtualFreeEx(hProcess,ParamAddr,ParamSize,MEM_RELEASE);
    //释放远程句柄
    CloseHandle(hThread);
    CloseHandle(hProcess);
}

void dg(){
    _asm{
        pushad
            mov eax,0401270h
            call eax
        popad
    }
}

int main()
{
    int pid;
    cout<<"输入目标进程ID";
    cin>>pid;
    for(int i=0;i<100000;i++){
        InfusionFunc(pid,dg,NULL,NULL);
    }
    return 1;
}
B注入调dg函数100000次后,B内存占了100多M


联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:VirtualFreeEx为啥一直失败呢
下一篇:为什么码码注入器调Call能用。VC++写了用不了,游戏崩溃
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

3正式会员
128/300

128

积分

51

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
77
海币
6700
交易币
0
沙发
发表于 2015-4-18 19:59:57 | 只看该作者
因为你释放代码写错了  
如果 dwFreeType 为 MEM_RELEASE,则 dwSize 必须为0 . 按 VirtualAllocEx审请时的大小全部释放。
3正式会员
217/300

217

积分

119

主题

8

听众
已帮网友解决0 个问题
好评
0
贡献
98
海币
1773
交易币
0
板凳
发表于 2015-4-18 20:00:43 | 只看该作者
有没有调试过啊,看下释放内存有没返回成功
贡献
337
海币
1093
交易币
0
地板
发表于 2015-4-20 20:05:14 | 只看该作者
谢谢楼主分享,支持 海论坛
4中级会员
320/600

320

积分

110

主题

6

听众
已帮网友解决0 个问题
好评
0
贡献
210
海币
2942
交易币
0
5#
发表于 2015-4-27 21:21:31 | 只看该作者
虽然不需要  可还是谢谢楼主  辛苦了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-4-5 01:52 , Processed in 0.088874 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

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