Code Monkey home page Code Monkey logo

yuanyuanxiang / simpleremoter Goto Github PK

View Code? Open in Web Editor NEW
869.0 33.0 323.0 1.92 MB

基于gh0st的远程控制器:实现了终端管理、进程管理、窗口管理、远程桌面、文件管理、语音管理、视频管理、服务管理、注册表管理等功能,优化全部代码及整理排版,修复内存泄漏缺陷,程序运行稳定。项目代码仅限于学习和交流用途。

C++ 59.84% C 40.16%
remote-control remote monitoring-tool remote-work management-system

simpleremoter's Introduction

[简介]

基于gh0st的远程控制器:实现了终端管理、进程管理、窗口管理、桌面管理、文件管理、语音管理、视频管理、服务管理、注册表管理等功能。

来源:https://github.com/zibility/Remote

日期:2019.1.1

[更新日志]

2019.1.5

1、整理垃圾排版,优化上线下线处理逻辑。
2、修复部分内存泄漏问题,改善线程处理逻辑。
3、修复客户端不停断线重连的缺陷。解决部分内存泄漏缺陷。
4、解决几处缺陷。【遗留问题】文件管理对话框释放资源导致第2次打开崩溃。

2019.1.6

1、改用EnumDisplaySettings获取屏幕大小,原方法获取屏幕大小不准。

2、将FileManagerDlg、InputDlg、FileTransferModeDlg、TrueColorToolBar还原到gh0st最初版本。

3、新增项目"ghost",不通过TestRun调用dll,而是直接生成可执行文件。

4、修复开启视频,客户端产生的一处内存泄漏缺陷,m_pCapture需要释放。

2019.1.7

1、ghost单台电脑只允许启动唯一的实例。

2、远程桌面反应迟钝,改用每秒传送8帧屏幕,后续有待优化。

2019.1.8

1、发现传屏的瓶颈在zlib压缩数据,更新zlib到版本V1.2.11,提高传送屏幕速度到每秒10帧。

2、ghost的类CBuffer不需要临界区。

2019.1.9

1、服务端IOCPServer类的工作线程改为计算机核心个数的2倍。

2、解决服务端主动退出的内存泄漏问题,泄漏源在OVERLAPPEDPLUS。

2019.1.10

1、服务端远程控制增加全屏(系统右键菜单)、退出全屏(F11)的功能。

2、修复客户端机器屏幕缩放时远程桌面鼠标光标位置不准确的问题。(跟踪光标受影响)

3、发现服务端需要采用默认英文输入法,才能在远程桌面输入中文(怀疑本地输入法截获消息)。

4、添加崩溃时写dump文件的代码。

2019.1.11

1、修复文件管理对话框多次打开崩溃的问题(【遗留问题】)。

2、遗留问题:远程cmd窗口总是将输入命令输出2次、文件对话框的菜单操作可能已失效。

2019.1.12

1、还原客户端的文件管理模块代码为gh0st的源码3.6版本.

2、修复上述"cmd窗口总是将输入命令输出2次"遗留问题。

3、打开注册表关闭后崩溃,参照按对文件管理窗口的修改进行处理。遗留问题:
	并无内存泄漏,但退出时报"HEAP: Free Heap modified after it was freed"问题。

4、退出时睡眠一会,等待服务端清理,发现这样可以避免退出时崩溃的概率。

5、发布稍微稳定的版本V1.0.0.1。

2019.1.13

1、在主对话框清理子窗口的资源(原先在各自的OnClose函数),通过CLOSE_DELETE_DLG控制。

2、修正CFileManagerDlg的构造函数调用SHGetFileInfo和FromHandle方法,解决多次打开崩溃。

3、更新服务端zlib版本为V1.2.11。(与客户端不同,因inflate_fast 崩溃,没有采用汇编)

2019.1.15

1、修复主控端CTalkDlg的内存泄漏问题,被控端即时消息对话框置于顶层。

2、SAFE_DELETE(ContextObject->olps)有崩溃概率。改为主控端退出时先令被控端退出,就没有内存泄漏。

3、开关音频时偶有内存泄漏,waveInCallBack线程不能正常退出。

2019.1.16

1、智能计时宏AUTO_TICK有问题,不应该用无名的局部变量auto_tick。

2、采用由Facebook所开发的速度更快的压缩库zstd,提高程序运行效率。
	参看:https://github.com/facebook/zstd

2019.1.17

1、添加比zstd更快的压缩库(压缩率不如zstd和zlib)lz4 1.8.3,参看
	https://github.com/lz4/lz4

2、修复被控端屏幕被缩放显示时远程桌面跟踪鼠标的位置不准的问题。

3、修复语音监听的问题,2个事件CAudio修改为非"Manual Reset"。

2019.1.18

1、整理部分垃圾代码。

2、发布V1.0.0.2。

2018.1.19

1、发现使用lz4压缩库时监控端程序进行远程桌面操作时容易崩溃,原因不明。

2、修复内存泄漏缺陷,在throw "Bad Buffer"的情况需要释放申请的内存。

2019.1.20

1、发现不管是采用zstd还是zlib,主控端在进行桌面控制时均有崩溃的几率(zlib较小)。

2、改用zlib压缩解压库。

3、完善追踪鼠标时鼠标形态变化时的展现效果。

4、当退出远程桌面窗口全屏状态时,不再向远程被控端发送F11。

5、发现在有线网络条件下主控端崩溃几率较小。

6、禁用主控端输入法,解决使用远程桌面在被控端输入时的麻烦问题。

2019.1.21

减少远程桌面new缓冲区的频率,将部分从堆上new固定内存的操作改用从栈上分配内存。

2019.1.22

减少音频视频捕获过程中频繁申请内存。

2019.1.25

1、修复被控端消息提示对话框在消息换行时显示不完整的问题。

2、添加/完善录制远程被控端视频的功能。

3、修复语音监听对话框显示已收到数据不更新状态的问题。

4、发现"发送本地语音"会导致主控端容易崩溃的问题,现象类似于操作远程桌面时的随机崩溃。

5、设置视频监控对话框为可调整大小,为其设置图标。

2019.1.26

1、发布V1.0.0.3。

2、修复Release模式打不开远程视频,或打开视频时画面卡住的问题,问题出在CCaptureVideo GetDIB。

2019.2.4

清理垃圾注释、整理不良排版,对代码略有改动。

遗留问题:文件管理功能无效、主控端随机崩溃。因此有必要将文件管理的功能屏蔽。

发布V1.0.0.4。

2019.3.24

1、将"2015Remote.rc"的一个光标文件"4.cur"的路径由绝对路径改为相对路径。

2、新增Release模式编译后控制台运行时不可见,新增TestRun向注册表写入开机自启动项。

2019.3.29

1、主控端和受控端同时修改LOGIN_INFOR结构,修复了受控端上报的操作系统信息不准确的问题。

2、发布V1.0.0.5。

注意:此次更新后的主控端需要和受控端匹配使用,否则可能出现问题。

2019.4.4

ghost项目采用VS2012 xp模式编译,以便支持在XP系统上运行。

2019.4.14

在2015RemoteDlg.h添加宏CLIENT_EXIT_WITH_SERVER,用于控制ghost是否随Yama退出。

2019.4.15

明确区分开退出被控端和退出主控端2个消息,只有发送退出被控端消息才会停止Socket客户端。

2019.4.19
1、TestRun读取配置文件改为setting.ini,配置项为 [settings] localIp 和 ghost。
2、CAudio的线程waveInCallBack在while循环有一处return,已改为break.

2019.4.20
TestRun在写入开机自启动项时先提升权限,以防止因权限不足而写注册表失败。

2019.4.30
升级全部项目采用Visual Studio Community 2015编译。

2019.5.6
当TestRun、ClientDemo运行时若未成功加载ServerDll.dll,则给出提示。
所有项目均采用平台工具集"Visual Studio 2012 - Windows XP (v110_xp)",以支持在XP上运行。

2019.5.7
1、添加对远程IP使用域名时的支持,若IP为域名,先将域名进行解析后再连接。
2、添加文档“使用花生壳.txt”,介绍了如何使用花生壳软件搭建远程监控系统。

2019.5.8
优化左键点击Yama托盘图标的效果。

2019.5.11
优化远程桌面发送屏幕的功能,可动态调整发送屏幕的速率。

2019.8.25
调整项目设置,解决采用VS2015编译时某些项目不通过的问题。

2021.3.14
修复了若干个问题。

simpleremoter's People

Contributors

yuanyuanxiang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

simpleremoter's Issues

VS2015编译不通过

严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) CList 不是模板 Yama server\2015Remote\IOCPServer.h 50

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1071 在注释中遇到意外的文件结束 (编译源文件 2015RemoteDlg.cpp) Yama server\2015remote\gh0st2remote.h 33

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1071 在注释中遇到意外的文件结束 (编译源文件 FileManagerDlg.cpp) Yama server\2015remote\gh0st2remote.h 33

CKernelManager::~CKernelManager()

CKernelManager::~CKernelManager()
{
printf("~CKernelManager begin\n");
int i = 0;
for (i=0;i<0x1000;++i)
{
if (m_hThread->h!=0)
{
CloseHandle(m_hThread[i].h);
m_hThread[i].h = NULL;
m_hThread[i].run = FALSE;
while (m_hThread[i].p)
Sleep(50);
}
}
m_ulThreadCount = 0;
printf("~CKernelManager end\n");
}

fatal error C1083: 无法打开包括文件: “vld.h”: No such file or directory

1.SimpleRemoter-1.0.0.4编译不了,错误如下。客户端与服务器都有这个错误。
fatal error C1083: 无法打开包括文件: “vld.h”: No such file or directory
2.客户端ClientDll.sln打开后里面只有一个工程ServerDll. 但我看客户端的目录里有ClientDll.vcxproj,ghost.vcxproj,TestRun.vcxproj三个工程文件。这些工程文件需要吗?

文件管理功能无效

获取到目标机器磁盘后,双击D盘,文件管理界面卡死无响应,vs2019+win10x64

CBuffer::WriteBuffer 0xc00005异常

dmp文件 分析如下:
STACK_TEXT:
0095f314 003765e3 02e30000 00d5df94 00000005 Yama!memcpy+0x509 [d:\agent_work\4\s\src\vctools\crt\vcruntime\src\string\i386\memcpy.asm @ 658]
0095f334 0037d527 00d5df94 00000005 6a9029c3 Yama!CBuffer::WriteBuffer+0x38 [E:\LeiDunWorkPath\SimpleRemoter\server\2015Remote\Buffer.cpp @ 124]
0095f3f4 0037f716 02a39a40 0095f40c 0000001d Yama!IOCPServer::OnClientPreSending+0x18c [E:\LeiDunWorkPath\SimpleRemoter\server\2015Remote\IOCPServer.cpp @ 586]
0095f430 0037f613 0095f448 002a0772 0037f58c Yama!CScreenSpyDlg::SendCommand+0x4d [E:\LeiDunWorkPath\SimpleRemoter\server\2015Remote\ScreenSpyDlg.cpp @ 452]
0095f464 00399542 00d0d2f0 0095f584 0015069e Yama!CScreenSpyDlg::PreTranslateMessage+0x87 [E:\LeiDunWorkPath\SimpleRemoter\server\2015Remote\ScreenSpyDlg.cpp @ 437]
0095f47c 0038e1c4 0015069e 00d0d2f0 00563980 Yama!CWnd::WalkPreTranslateTree+0x30 [d:\agent_work\4\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\wincore.cpp @ 3379]
0095f498 0038e5dd 00d0d2f0 0095f4b8 0038e2c1 Yama!AfxInternalPreTranslateMessage+0x3a [d:\agent_work\4\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\thrdcore.cpp @ 233]
0095f4a4 0038e2c1 00d0d2f0 00d0d2f0 00d0d2c0 Yama!CWinThread::PreTranslateMessage+0xb [d:\agent_work\4\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\thrdcore.cpp @ 777]
0095f4b8 0038e253 00d0d2f0 00563980 0038e718 Yama!AfxPreTranslateMessage+0x25 [d:\agent_work\4\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\thrdcore.cpp @ 252]
0095f4c8 0038e320 00000000 0095f584 00398e9f Yama!AfxInternalPumpMessage+0x2b [d:\agent_work\4\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\thrdcore.cpp @ 178]
0095f4d4 00398e9f 00000001 0095f584 00000000 Yama!AfxPumpMessage+0x1f [d:\agent_work\4\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\thrdcore.cpp @ 190]
0095f4f8 0038d019 00000004 0095f584 00000000 Yama!CWnd::RunModalLoop+0xc5 [d:\agent_work\4\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\wincore.cpp @ 4661]
0095f50c 0038d157 005762e0 00000000 00370000 Yama!CWnd::CreateRunDlgIndirect+0x3d [d:\agent_work\4\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\dlgcore.cpp @ 474]
0095f560 00371eb1 6a90215b 00563980 00371ddc Yama!CDialog::DoModal+0x11e [d:\agent_work\4\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\dlgcore.cpp @ 633]
0095fb6c 004ed27b 00000000 00000001 0063b000 Yama!CMy2015RemoteApp::InitInstance+0xd5 [E:\LeiDunWorkPath\SimpleRemoter\server\2015Remote\2015Remote.cpp @ 131]
0095fb84 004c324b 00370000 00000000 00ca30d0 Yama!AfxWinMain+0x5f [d:\agent_work\4\s\src\vctools\VC7Libs\Ship\ATLMFC\Src\MFC\winmain.cpp @ 37]
0095fbd0 749762c4 0063b000 749762a0 13db8ad4 Yama!__scrt_common_main_seh+0xf8 [d:\agent_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 288]
0095fbe4 77901e39 0063b000 13ec6ba0 00000000 kernel32!BaseThreadInitThunk+0x24
0095fc2c 77901e04 ffffffff 779236c0 00000000 ntdll!__RtlUserThreadStart+0x2f
0095fc3c 00000000 004c32cf 0063b000 00000000 ntdll!_RtlUserThreadStart+0x1b

源代码中为这一样报错:
CopyMemory(m_Ptr,Buffer,ulLength);//Hello 5

其中‘m_Ptr’ 的值为:
0:000> db 2e30000
02e30000 4d 5a 90 00 03 00 00 00-04 00 00 00 ff ff 00 00 MZ..............
02e30010 b8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00 ........@.......
02e30020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
02e30030 00 00 00 00 00 00 00 00-00 00 00 00 b8 00 00 00 ................
02e30040 0e 1f ba 0e 00 b4 09 cd-21 b8 01 4c cd 21 54 68 ........!..L.!Th
02e30050 69 73 20 70 72 6f 67 72-61 6d 20 63 61 6e 6e 6f is program canno
02e30060 74 20 62 65 20 72 75 6e-20 69 6e 20 44 4f 53 20 t be run in DOS
02e30070 6d 6f 64 65 2e 0d 0d 0a-24 00 00 00 00 00 00 00 mode....$.

好像是某个模块的入口点,没想通为什么上面重新申请buffer成功返回。而下面的追加写入数据的m_Ptr会出错

触发条件:
在服务器放上主控端。远程桌面管理。控制远程鼠标 频繁控制就会触发。本地控制虚拟机不会触发此问题

动态域名

能把原来GH0ST客户端有的那个URL 动态域名方式修复么,没动态域名只能局域网 或者有固定IP才能用哦

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.