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

kawa operand

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

Vandal™

Известный
55
4
jy5eevx1RjyHQ8_uZGkW3A.png


Это на какой штуке замутили? название GUI
 

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
445
Как обозначить подстроки в строке разным цветом в функции ID3DXFont:: DrawTextA,
как это было в клео "{ffffff}Привет, {00cc00}Мир!". сукп все перерыл, а в собейте такое не используется
Он такое не умеет. Юзай CD3DFont из соба, но он вроде не умеет в сложные шрифты.
 

NarutoUA

NarutoUA
BH Team
692
1,539
Как обозначить подстроки в строке разным цветом в функции 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,720
6,375
У кого есть функция 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™