diff --git a/Dependencies.md b/Dependencies.md index a9fbb97..a8c7c70 100644 --- a/Dependencies.md +++ b/Dependencies.md @@ -12,6 +12,12 @@ - [opus-1.6.1](https://opus-codec.org/release/stable/2026/01/14/libopus-1_6_1.html) - [libpeconv c7d1e48](https://github.com/hasherezade/libpeconv) +## execution + +- [MemoryModule](https://github.com/fancycode/MemoryModule.git) +- [sRDI](https://github.com/Drewsif/sRDI.git) +- [pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode.git) + ## *Note* The proper operation of the program depends on the above library files. diff --git a/LICENSE-THIRD-PARTY.txt b/LICENSE-THIRD-PARTY.txt new file mode 100644 index 0000000..85d34c4 --- /dev/null +++ b/LICENSE-THIRD-PARTY.txt @@ -0,0 +1,279 @@ +THIRD-PARTY SOFTWARE NOTICES AND LICENSES + +This document contains intellectual property notices and license information for +third-party software components used in this product. + +================================================================================ +SUMMARY OF LICENSE TYPES +================================================================================ +The third-party components included in this software are governed by the following +open-source licenses. For complete compliance, ensure that any modifications to +LGPL and MPL covered components are made available under their respective terms, +and this text file is distributed with your software product. + +1. Zlib License + - zlib v1.3.2 +2. BSD 3-Clause License + - zstd v1.5.7 + - libyuv v190 + - jpeg (libjpeg-turbo) v3.1.1 + - opus-1.6.1 +3. BSD 2-Clause License + - libpeconv c7d1e48 + - pe_to_shellcode +4. MIT License + - jsoncpp v1.9.6 + - sRDI +5. GNU Lesser General Public License v2.1 (LGPL v2.1) + - ffmpeg v7.1 (Compiled in shared, non-GPL mode) +6. Mozilla Public License v2.0 (MPL 2.0) + - MemoryModule + +================================================================================ +1. zlib v1.3.2 (Zlib License) +================================================================================ +Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +================================================================================ +2. zstd v1.5.7 (BSD 3-Clause License) +================================================================================ +Copyright (c) 2016-present, Facebook, Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +================================================================================ +3. libyuv v190 (BSD 3-Clause License) +================================================================================ +Copyright 2011 The LibYuv Project Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Google nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +================================================================================ +4. jpeg (libjpeg-turbo) v3.1.1 (BSD 3-Clause / IJG License) +================================================================================ +Copyright (C) 2009-2024 D. R. Commander. All Rights Reserved. +Copyright (C) 2015 Viktor Szathmáry. All Rights Reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +- Neither the name of the libjpeg-turbo Project nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +================================================================================ +5. opus-1.6.1 (BSD 3-Clause License) +================================================================================ +Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, + Jean-Marc Valin, Timothy B. Terriberry, + CSIRO, Gregory Maxwell, Mark Borgerding, + Erik de Castro Lopo + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.Org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +================================================================================ +6. libpeconv c7d1e48 & pe_to_shellcode (BSD 2-Clause License) +================================================================================ +Copyright (c) 2020, hasherezade +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +================================================================================ +7. jsoncpp v1.9.6 (MIT License) +================================================================================ +Copyright (c) 2007-2010 The JsonCpp Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +================================================================================ +8. sRDI (MIT License) +================================================================================ +Copyright (c) 2017 Drewsif + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +================================================================================ +9. ffmpeg v7.1 (GNU Lesser General Public License v2.1) +================================================================================ +This software uses libraries from the FFmpeg project (v7.1), licensed under the +GNU Lesser General Public License (LGPL) version 2.1. +FFmpeg is a trademark of Fabrice Bellard, originator of the FFmpeg project. + +Our product links to FFmpeg dynamically as a shared library (.dll/.so/.dylib) +and does NOT enable any GPL-licensed plugins (such as x264). + +The source code of FFmpeg v7.1 can be obtained from the official FFmpeg +website (https://ffmpeg.org). If you require the exact build script and build +configuration used by our product to build the FFmpeg binary, please contact +our open-source compliance team. + +================================================================================ +10. MemoryModule (Mozilla Public License v2.0) +================================================================================ +This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. +If a copy of the MPL was not distributed with this file, You can obtain one at +http://mozilla.org/MPL/2.0/. + +MemoryModule is Copyright (c) Joachim Bauch. + +Under the terms of the MPL 2.0, you may distribute this component as part of +your commercial/proprietary application without being required to open-source +your own proprietary code, provided that: +1. MemoryModule source files remain unmodified, or if modified, those modifications + are made available under the MPL 2.0. +2. Users are informed that MemoryModule is used and where they can find its source. \ No newline at end of file diff --git a/client/X264Encoder.h b/client/X264Encoder.h index 77f7917..0be2592 100644 --- a/client/X264Encoder.h +++ b/client/X264Encoder.h @@ -5,7 +5,7 @@ extern "C" { #include } -#define DISABLE_X264_FOR_TEST 0 +#include "common/config.h" class CX264Encoder { diff --git a/common/config.h b/common/config.h new file mode 100644 index 0000000..7147de0 --- /dev/null +++ b/common/config.h @@ -0,0 +1,6 @@ + +// 请设置为禁用,防止GPL开源传染性 +#define DISABLE_X264_FOR_TEST 0 + +// 请设置为禁用,防止GPL开源传染性 +#define DISABLE_FFMPEG_FOR_TEST 0 diff --git a/server/2015Remote/ScreenSpyDlg.h b/server/2015Remote/ScreenSpyDlg.h index 59657c6..2efb8fa 100644 --- a/server/2015Remote/ScreenSpyDlg.h +++ b/server/2015Remote/ScreenSpyDlg.h @@ -8,28 +8,81 @@ #include "ToolbarDlg.h" #include "2015RemoteDlg.h" +#include "common/config.h" + +extern "C" +{ +#include "libyuv\libyuv.h" +} + +#if DISABLE_FFMPEG_FOR_TEST + +#define AV_CODEC_ID_H264 27 +#define AVERROR(e) (-(e)) + +// 伪装不涉及内部成员直接访问的上下文指针 +typedef void AVCodecContext; +typedef void AVCodec; + +// 伪装 AVPacket 结构体,补全被主程序访问的 data 和 size 成员 +struct AVPacket { + unsigned char* data; + int size; + long long pts; + long long dts; + int flags; +}; + +// 伪装 AVFrame 结构体,补全被主程序访问的 data 和 linesize 成员 +struct AVFrame { + unsigned char* data[8]; + int linesize[8]; + int width; + int height; + int format; +}; + +// 使用 extern "C" __inline 或者是 inline 关键字,直接就地实现函数体 +extern "C" { + __inline void av_frame_unref(AVFrame* frame) { + if (frame) { + for (int i = 0; i < 8; i++) { frame->data[i] = nullptr; frame->linesize[i] = 0; } + } + } + __inline AVCodec* avcodec_find_decoder(int id) { return nullptr; } + __inline void av_init_packet(AVPacket* pkt) { if (pkt) { pkt->data = nullptr; pkt->size = 0; } } + __inline AVCodecContext* avcodec_alloc_context3(const AVCodec* codec) { return nullptr; } + __inline void avcodec_free_context(AVCodecContext** avctx) { if (avctx) *avctx = nullptr; } + __inline int avcodec_open2(AVCodecContext* avctx, const AVCodec* codec, void** options) { return -1; } + __inline int avcodec_send_packet(AVCodecContext* avctx, const AVPacket* avpkt) { return -1; } + __inline int avcodec_receive_frame(AVCodecContext* avctx, AVFrame* frame) { return -1; } + __inline void avcodec_flush_buffers(AVCodecContext* avctx) { /* 空白实现 */ } +} + +#else extern "C" { #include "libavcodec\avcodec.h" #include "libavutil\avutil.h" -#include "libyuv\libyuv.h" } - #ifndef _WIN64 // https://github.com/Terodee/FFMpeg-windows-static-build/releases #pragma comment(lib,"ffmpeg/libavcodec.lib") #pragma comment(lib,"ffmpeg/libavutil.lib") #pragma comment(lib,"ffmpeg/libswresample.lib") - -#pragma comment(lib,"libyuv/libyuv.lib") #else -#pragma comment(lib,"x264/libx264_x64.lib") -#pragma comment(lib,"libyuv/libyuv_x64.lib") // https://github.com/ShiftMediaProject/FFmpeg #pragma comment(lib,"ffmpeg/libavcodec_x64.lib") #pragma comment(lib,"ffmpeg/libavutil_x64.lib") #pragma comment(lib,"ffmpeg/libswresample_x64.lib") #endif +#endif + +#ifndef _WIN64 +#pragma comment(lib,"libyuv/libyuv.lib") +#else +#pragma comment(lib,"libyuv/libyuv_x64.lib") +#endif #pragma comment(lib, "Mfplat.lib") #pragma comment(lib, "Mfuuid.lib")