Другое С/С++ Вопрос - Ответ

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
  • Нравится
Реакции: romanblinov2013

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
На просторах тырынета нашел пакер могайки, решил изучить, но так и не понял зачем там
[hide=500]
C++:
char pStartData[] = { 0x02, 0x00, 0x01 };
char pPackData[] = { 0xC6, 0x0A, 0x01, 0xF9, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x06, 0x00, 0x03, 0x01, 0x00, 0x01 };
char pPackData2[] = { 0x06, 0x00, 0x03, 0x02, 0x00, 0x04, 0x00, 0x85, 0x00, 0x03, 0x05, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x03, 0x05, 0x00, 0x04, 0x07, 0x2D, 0x80, 0x03, 0x02, 0x00, 0x03, 0x01, 0x00, 0x4D, 0x00, 0x01 };
char pPackData3[] = { 0x8D, 0x0A, 0x03, 0x00, 0x00, 0x04, 0x01, 0x04, 0x01, 0x03, 0x03, 0x00, 0x12, 0x0B, 0x03, 0x03, 0x00, 0x04 };
char pPackData4[] = { 0x03, 0x04, 0x00, 0x00, 0x00, 0x8C, 0x0A, 0x03, 0x05, 0x00, 0x04, 0x01, 0x03, 0x04, 0x00, 0x04, 0x01, 0x0A, 0x00, 0x03, 0x00, 0x00, 0x04, 0x01, 0x0A, 0x00, 0x03, 0x02, 0x00, 0x04, 0x01, 0x0A, 0x00, 0x03, 0x05, 0x00, 0x04, 0x01, 0x02, 0x00, 0x01 };
char pPackData5[] = { 0x9F, 0x0A, 0x03, 0x00, 0x00, 0x8E, 0x0A, 0x03, 0x00, 0x00, 0x04, 0x10, 0x03, 0x01, 0x00, 0x8D, 0x0A, 0x03, 0x01, 0x00, 0x04, 0x04, 0x04, 0x01, 0x03, 0x02, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x00, 0x04, 0x04, 0x8C, 0x0A, 0x03, 0x01, 0x00, 0x04, 0x04, 0x03, 0x02, 0x00, 0x04, 0x01 };
[/hide]
[hide=500]
C++:
#include <iostream>
#include <fstream>
#include <windows.h>
#include <vector>

void error(char* t)
{
    std::cout << "Error: " << t << "\n";
    system("pause");
    exit(-1);
}

char pStartData[] = { 0x02, 0x00, 0x01 };
char pPackData[] = { 0xC6, 0x0A, 0x01, 0xF9, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x06, 0x00, 0x03, 0x01, 0x00, 0x01 };
char pPackData2[] = { 0x06, 0x00, 0x03, 0x02, 0x00, 0x04, 0x00, 0x85, 0x00, 0x03, 0x05, 0x00, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x03, 0x05, 0x00, 0x04, 0x07, 0x2D, 0x80, 0x03, 0x02, 0x00, 0x03, 0x01, 0x00, 0x4D, 0x00, 0x01 };
char pPackData3[] = { 0x8D, 0x0A, 0x03, 0x00, 0x00, 0x04, 0x01, 0x04, 0x01, 0x03, 0x03, 0x00, 0x12, 0x0B, 0x03, 0x03, 0x00, 0x04 };
char pPackData4[] = { 0x03, 0x04, 0x00, 0x00, 0x00, 0x8C, 0x0A, 0x03, 0x05, 0x00, 0x04, 0x01, 0x03, 0x04, 0x00, 0x04, 0x01, 0x0A, 0x00, 0x03, 0x00, 0x00, 0x04, 0x01, 0x0A, 0x00, 0x03, 0x02, 0x00, 0x04, 0x01, 0x0A, 0x00, 0x03, 0x05, 0x00, 0x04, 0x01, 0x02, 0x00, 0x01 };
char pPackData5[] = { 0x9F, 0x0A, 0x03, 0x00, 0x00, 0x8E, 0x0A, 0x03, 0x00, 0x00, 0x04, 0x10, 0x03, 0x01, 0x00, 0x8D, 0x0A, 0x03, 0x01, 0x00, 0x04, 0x04, 0x04, 0x01, 0x03, 0x02, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x00, 0x04, 0x04, 0x8C, 0x0A, 0x03, 0x01, 0x00, 0x04, 0x04, 0x03, 0x02, 0x00, 0x04, 0x01 };

void pushar(std::vector<char> & v, void* memptr, size_t size)
{
    for (size_t i = 0; i < size; i++)
        v.push_back(((char*)memptr)[i]);
}

int random()
{
    int r = rand() * rand() / rand() + rand();
    srand(GetTickCount() + r);
    srand(rand() - r);
    return rand();
}

void loadfl(std::vector<char> & vec, char* fname)
{
    std::ifstream f(fname, std::ios::binary);
    while (!f.eof())
        vec.push_back(f.get());
    vec.pop_back();
    f.close();
}

void savefl(std::vector<char> & vec, char* fname)
{
    std::ofstream f(fname, std::ios::binary);
    for (unsigned int i = 0; i < vec.size(); i++)
        f << (unsigned char)vec[i];
    f.close();
}

void packscript(std::vector<char> & vecdata, std::vector<char> & vecresult)
{
    int fsize = vecdata.size();
    unsigned char xorvalue = (random() % 12 + 2) * 16 + random() % 12 + 2;

    int jumpaddr = -(fsize + 7);
    pushar(vecresult, pStartData, sizeof(pStartData));
    pushar(vecresult, &jumpaddr, sizeof(jumpaddr));

    for (unsigned int i = 0; i < fsize; i++)
        vecresult.push_back(vecdata[i] ^ xorvalue);

    pushar(vecresult, pPackData, sizeof(pPackData));
    pushar(vecresult, &fsize, sizeof(int));

    pushar(vecresult, pPackData2, sizeof(pPackData2));
    jumpaddr = -(fsize + 128);
    pushar(vecresult, &jumpaddr, sizeof(jumpaddr));

    pushar(vecresult, pPackData3, sizeof(pPackData3));
    pushar(vecresult, &xorvalue, sizeof(xorvalue));

    pushar(vecresult, pPackData4, sizeof(pPackData4));
    jumpaddr = -(fsize + 49);
    pushar(vecresult, &jumpaddr, sizeof(jumpaddr));

    pushar(vecresult, pPackData5, sizeof(pPackData5));
}

int main(int argc, char** args)
{
    if (argc < 2)
        error("need more arguments");
  
    int cnt;
    if (argc == 3)
        cnt = atoi(args[2]);
    else
    {
        std::cout << "Enter count of packer cycles: ";
        std::cin >> cnt;
    }

    std::vector<char> vecdata;
    std::vector<char> vecresult;
  
    loadfl(vecresult, args[1]);

    if (!vecresult.size())
        error("empty file or cannot open file");

    for (int i = 0; i < cnt; i++)
    {
        for (int i = 0; i < vecresult.size(); i++)
            vecdata.push_back(vecresult[i]);

        vecresult.clear();
        packscript(vecdata, vecresult);
        vecdata.clear();
    }

    static char nefname[512];
    strcpy_s(nefname, args[1]);
    strcat_s(nefname, "crypted.cs");

    savefl(vecresult, nefname);

    std::cout << "COMPLETED\n";
    system("pause");

    return 0;
}
[/hide]
 
  • Нравится
Реакции: romanblinov2013 и ishi

Vandal™

Известный
55
4
Есть какая-нибудь проверка на то, что игрок в афк? Именно локальный игрок, что бы не выполнялись функции при выходе с АФК
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как обозначить подстроки в строке разным цветом в функции ID3DXFont:: DrawTextA,
как это было в клео "{ffffff}Привет, {00cc00}Мир!". сукп все перерыл, а в собейте такое не используется
 
  • Нравится
Реакции: romanblinov2013

BlackKnigga

Известный
BH Team
922
448
Как обозначить подстроки в строке разным цветом в функции ID3DXFont:: DrawTextA,
как это было в клео "{ffffff}Привет, {00cc00}Мир!". сукп все перерыл, а в собейте такое не используется
Он такое не умеет. Юзай CD3DFont из соба, но он вроде не умеет в сложные шрифты.
 

NarutoUA

NarutoUA
BH Team
692
1,558
Как обозначить подстроки в строке разным цветом в функции ID3DXFont:: DrawTextA,
как это было в клео "{ffffff}Привет, {00cc00}Мир!". сукп все перерыл, а в собейте такое не используется
надо брать указатель на шрифт из структур сампа (stFontRenderer вроде), там модифицированный ID3DXFont который как раз атки и умеет в эти цветотэги
 

Vandal™

Известный
55
4
У кого есть функция stristr ? Проще говоря, strstr без учета регистра.

Есть такая хрень, но она чет не работает))
C++:
using namespace std;
using std::string;

const char *stristr(const char * s1, const char * s2)
{
    string ss1 = _tolower(s1);
    string ss2 = _tolower(s2);

    const string::size_type index = ss1.find(ss2);
    if(index == string::npos)
    {
        return NULL;
    }
    return &s1[index];
}
 

SR_team

like pancake
BH Team
4,816
6,517
У кого есть функция stristr ? Проще говоря, strstr без учета регистра.

Есть такая хрень, но она чет не работает))
C++:
using namespace std;
using std::string;

const char *stristr(const char * s1, const char * s2)
{
    string ss1 = _tolower(s1);
    string ss2 = _tolower(s2);

    const string::size_type index = ss1.find(ss2);
    if(index == string::npos)
    {
        return NULL;
    }
    return &s1[index];
}
Исходник - SRString(https://blast.hk/threads/18698/)

C++:
int stristr(SRString one, SRString two){
    return one.toLower().indexOf(two.toLower());
}
 
  • Нравится
Реакции: Vandal™