吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 886|回复: 5
收起左侧

[C&C++ 原创] 开源一套文件打包,解包源码。

[复制链接]
ward789 发表于 2024-7-22 14:47
本帖最后由 ward789 于 2024-7-22 14:48 编辑

[C++] 纯文本查看 复制代码
#include <stdio.h>  
#include <string.h>  

struct file_head {
    int filesize;
    char filename[256];
};

#define ARRAY_NUM(arr) (sizeof(arr)/sizeof(arr[0]))  

int main()
{
    char* file_arr[] = {

     "目标文件.exe", "目标文件.MP4"
      
    };

    FILE* fp = fopen("打包.pack", "wb");
    if (NULL == fp) {
        printf("open new file failed !\n");
        return -1;
    }

    for (int i = 0; i < ARRAY_NUM(file_arr); ++i) {
        const char* filename = file_arr[i];
        FILE* tfp = fopen(filename, "rb");
        if (NULL == tfp) {
            printf("open file :%s file failed !\n", filename);
            continue;
        }
        fseek(tfp, 0, SEEK_END);
        long filesize = ftell(tfp);
        fseek(tfp, 0, SEEK_SET);
        struct file_head hdr = { 0 };
        hdr.filesize = filesize;
        strcpy(hdr.filename, filename);

        fwrite(&hdr, 1, sizeof(hdr), fp);

        char buffer[4096] = { 0 };
        while (1)
        {
            int ret = fread(buffer, 1, 4096, tfp);
            if (ret <= 0) break;
            fwrite(buffer, 1, ret, fp);
        }
        fclose(tfp);
        printf("file :%s 成功 .\n", filename);
    }

    fclose(fp);

    return 0;
}
[C++] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <process.h> 
#include <winioctl.h>
#include <string.h>

#pragma comment(lib, "Iphlpapi.lib")
#include <Iphlpapi.h>
#include <stdbool.h> 
#include <tlhelp32.h>


bool isProcessRunning(const char* processName) {
    HANDLE hSnapshot;
    PROCESSENTRY32 pe32;

    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnapshot == INVALID_HANDLE_VALUE) {
        return false;
    }

    pe32.dwSize = sizeof(PROCESSENTRY32);

    if (Process32First(hSnapshot, &pe32)) {
        do {
            if (strcmp(pe32.szExeFile, processName) == 0) {
                CloseHandle(hSnapshot);
                return true;
            }
        } while (Process32Next(hSnapshot, &pe32));
    }

    CloseHandle(hSnapshot);
    return false;
}

// 结构体定义
struct file_header {
    int filesize;
    char filename[256];
};

// 后台任务线程函数
unsigned __stdcall backgroundTask(void* arg) {
    while (true) {

        if (!isProcessRunning("目标文件.exe")) {
            remove("目标文件");
        }
        if (!isProcessRunning("目标文件.MP4")) {
            remove("目标文件");
        }

        Sleep(1000);
    }
    return 0;
}

int main() {

    FILE* fp = fopen("打包.pack", "rb");
    if (fp == NULL) {
        printf("打开打包文件失败,错误代码: %d\n", GetLastError());
        return -1;
    }

    struct file_header hdr;
    while (fread(&hdr, sizeof(hdr), 1, fp) == 1) {
        FILE* tfp = fopen(hdr.filename, "wb");
        if (tfp == NULL) {
            printf("创建文件 '%s' 失败,错误代码: %d\n", hdr.filename, GetLastError());
            fseek(fp, hdr.filesize, SEEK_CUR);
            continue;
        }

        char buffer[4096];
        size_t size = hdr.filesize;
        while (size > 0) {
            size_t ret = fread(buffer, 1, size < sizeof(buffer) ? size : sizeof(buffer), fp);
            size -= ret;
            fwrite(buffer, 1, ret, tfp);
        }
        fclose(tfp);
    }

    fclose(fp);

    // 启动外部程序  
    if (system("start 目标文件.MP4") != 0) {
        printf("启动'目标文件.MP4'失败,错误代码: %d\n", GetLastError());
    }
    if (system("start 目标文件.exe") != 0) {
        printf("启动'目标文件.exe'失败,错误代码: %d\n", GetLastError());
    }


    HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, backgroundTask, NULL, 0, NULL);

 
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        if (msg.message == WM_CLOSE) {
            if (isProcessRunning("目标文件.MP4") || isProcessRunning("目标文件.exe")) {
                MessageBox(NULL, "***" "提示", MB_OK | MB_ICONWARNING);
                continue;
            }
        }
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}

免费评分

参与人数 3吾爱币 +9 热心值 +3 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
hzh193536 + 1 + 1 我很赞同!
wanfon + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
ootd123 发表于 2024-7-22 17:39
提示: 作者被禁止或删除 内容自动屏蔽
kenan9527 发表于 2024-7-23 04:43
L__ 发表于 2024-7-24 14:08
头像被屏蔽
xiaoniuniu11 发表于 2024-7-25 01:32
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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