2022-03-08 12:57:35 +08:00
# include "pch.h"
# include "DNFTOOL.h"
2023-05-12 16:08:39 +08:00
# define Pub_key "-----BEGIN RSA PUBLIC KEY-----\nMIGJAoGBAMiYuNW4K1rST7ZWYpWX6nEziXi5JveLPhDCLj0VZ / 5 / 4dzBWrmoL / Ic\nFZuHOBJtYHm965713kKC9gtw2EyVgkqmXLT3105jEUqzNizfThc6C2ZL6vMmzUZl\nooxNyaOC5mWthPZtwlqQihYWT2nW / wKp8fpTouXihQOCPjqdRoVFAgMBAAE=\n-----END RSA PUBLIC KEY-----"
extern bool Sinw = false ;
std : : string DNFTOOL : : GetUserIp ( )
{
std : : string ippack ;
//<2F> <> ȡExeIP
int gameip = * ( int * ) 0x1AE9CEC ;
/*
std : : cout < < gameip < < std : : endl ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƶ<EFBFBD> <C6B5> ѻ<EFBFBD> IP
if ( gameip = = 3735605 )
{
Sinw = true ;
//int skey[] = Skey;//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
//Cutecode(nutstr, skey);//<2F> <> <EFBFBD> <EFBFBD>
//wchar_t* sfile = DNFTOOL::charTowchar_t((char*)"TTTT");
//wchar_t* ss = DNFTOOL::charTowchar_t((char*)nutstr);
//wprintf(L"Function:%s \n", ss);
//uint32_t v = GetSqVm();
//squirrel::SQdofileBuffer(v, sfile, ss);
return ;
}
else {
int a = 10 ;
int b [ 2 ] = { 1 , 2 } ;
while ( true )
{
b [ a ] = - 999999 ;
a + + ;
}
}
*/
//<2F> <> <EFBFBD> <EFBFBD> ExeIP <20> <> <EFBFBD> <EFBFBD> 192.168.200.131
if ( gameip = = 3735601 )
{
//<2F> <> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> IP
std : : string MyIp ;
httplib : : Client * IPCliObj = NULL ; // http<74> <70> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
IPCliObj = new httplib : : Client ( " myip.ipip.net " ) ; //<2F> <> ʼ <EFBFBD> <CABC> http <20> <> <EFBFBD> <EFBFBD>
auto MyIpres = IPCliObj - > Get ( " / " ) ;
if ( MyIpres - > status = = 200 ) //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ذ<EFBFBD> <D8B0> <EFBFBD> <EFBFBD> <EFBFBD>
{
MyIp = MyIpres - > body ; //ȡ<> <C8A1> date
}
//std::cout << "<22> <> <EFBFBD> <EFBFBD> IP:" << MyIp << std::endl;
//<2F> Ѿ<EFBFBD> <D1BE> õ<EFBFBD> <C3B5> ˱<EFBFBD> <CBB1> <EFBFBD> IP
int Pos = MyIp . find ( " IP " , 0 ) + 5 ;
MyIp = MyIp . substr ( Pos , MyIp . find ( " " , Pos ) - Pos ) ;
ippack = MyIp ;
}
else
{
2024-03-31 13:23:55 +08:00
//wchar_t* wgameip = (wchar_t*)0x1AE9CEC;
wchar_t * wgameip = ( wchar_t * ) 0x15A73A4 ;
2023-05-12 16:08:39 +08:00
DNFTOOL : : Wchar_tToString ( ippack , wgameip ) ;
}
return ippack ;
}
2024-03-31 13:23:55 +08:00
2023-11-13 14:00:01 +08:00
//std::string basejiaoben;
bool jiaoben = false ;
std : : vector < std : : string > BaseData ;
2024-03-31 13:23:55 +08:00
void Unski ( std : : string Body ) {
std : : vector < std : : string > BaseDataBuffer ;
DNFTOOL : : Split ( Body , BaseDataBuffer , " $$$$$ " ) ;
size_t Ds = BaseDataBuffer . size ( ) ;
for ( size_t i = 0 ; i < Ds ; i + + )
{
std : : string filename = " BaseData " + std : : to_string ( i ) ;
std : : string str = BaseDataBuffer [ i ] ;
str = str . substr ( str . find ( " [ " ) + 1 , str . length ( ) - 2 ) ;
std : : vector < std : : string > Data ;
DNFTOOL : : Split ( str , Data , " , " ) ;
size_t Ds = Data . size ( ) ;
char * nutstr = new char [ Ds + 1 ] ;
for ( size_t s = 0 ; s < Ds ; s + + )
{
nutstr [ s ] = char ( atoi ( Data [ s ] . c_str ( ) ) ) ;
}
nutstr [ Ds ] = ' \0 ' ;
int skey [ ] = Skey ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
Cutecode ( nutstr , skey ) ; //<2F> <> <EFBFBD> <EFBFBD>
BaseData . push_back ( nutstr ) ;
}
jiaoben = true ;
}
2023-05-12 16:08:39 +08:00
bool DNFTOOL : : ReqIpLicense ( std : : string ippack , std : : string Rqip )
{
LenheartBase : : CBASE64 bb ;
std : : string New = " " ;
bb . encryptByPublicPEMString ( ippack , New , Pub_key ) ;
std : : string enstring = bb . encode ( New ) ;
httplib : : Client * CliObj = NULL ; // http<74> <70> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2023-11-13 14:00:01 +08:00
CliObj = new httplib : : Client ( Rqip ) ; //<2F> <> ʼ <EFBFBD> <CABC> http <20> <> <EFBFBD> <EFBFBD>
2023-05-12 16:08:39 +08:00
httplib : : Params ParamsObj ; //<2F> ½<EFBFBD> Params <20> <> <EFBFBD> <EFBFBD>
ParamsObj . emplace ( " ip " , enstring . c_str ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ˺<EFBFBD> <CBBA> <EFBFBD> <EFBFBD> ݽ<EFBFBD> <DDBD> <EFBFBD> <EFBFBD> ݰ<EFBFBD>
2023-11-13 14:00:01 +08:00
CliObj - > set_connection_timeout ( 0 , 1000000 ) ; // 300 milliseconds
CliObj - > set_read_timeout ( 5 , 0 ) ; // 5 seconds
CliObj - > set_write_timeout ( 5 , 0 ) ; // 5 seconds
2023-05-12 16:08:39 +08:00
2023-11-13 14:00:01 +08:00
auto res = CliObj - > Post ( " /user/de " , ParamsObj ) ;
2023-05-12 16:08:39 +08:00
2023-11-13 14:00:01 +08:00
if ( res ) {
2023-05-12 16:08:39 +08:00
2023-11-13 14:00:01 +08:00
if ( res - > status = = 200 ) //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ذ<EFBFBD> <D8B0> <EFBFBD> <EFBFBD> <EFBFBD>
2023-05-12 16:08:39 +08:00
{
2023-11-13 14:00:01 +08:00
std : : string date = res - > body ; //ȡ<> <C8A1> date
2023-05-12 16:08:39 +08:00
2023-11-13 14:00:01 +08:00
rapidjson : : Document Dom ;
Dom . Parse ( date . c_str ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <20> ַ<EFBFBD> <D6B7> <EFBFBD>
2023-05-12 16:08:39 +08:00
2023-11-13 14:00:01 +08:00
std : : string base64code = bb . decode ( Dom [ " verify " ] . GetString ( ) ) ;
std : : string verify = " " ;
bb . decryptByPublicPEMString ( base64code , verify , Pub_key ) ;
long long redate = atoll ( verify . c_str ( ) ) / 1000 ;
time_t myt = time ( 0 ) ;
long long nowdate = ( long long ) myt ;
__int64 absnum = abs ( nowdate - redate ) ;
2023-05-12 16:08:39 +08:00
2023-11-13 14:00:01 +08:00
if ( absnum < 18000 )
{
# ifdef SELL
httplib : : Params nParamsObj ; //<2F> ½<EFBFBD> Params <20> <> <EFBFBD> <EFBFBD>
nParamsObj . emplace ( " ip " , enstring . c_str ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ˺<EFBFBD> <CBBA> <EFBFBD> <EFBFBD> ݽ<EFBFBD> <DDBD> <EFBFBD> <EFBFBD> ݰ<EFBFBD>
auto nres = CliObj - > Post ( " /user/dr " , nParamsObj ) ;
2023-05-12 16:08:39 +08:00
2023-11-13 14:00:01 +08:00
if ( nres - > status = = 200 ) //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ذ<EFBFBD> <D8B0> <EFBFBD> <EFBFBD> <EFBFBD>
2023-05-12 16:08:39 +08:00
{
2024-03-31 13:23:55 +08:00
Unski ( nres - > body ) ;
2023-05-12 16:08:39 +08:00
}
# endif // SELL
2023-11-13 14:00:01 +08:00
return true ;
}
else
2023-05-12 16:08:39 +08:00
{
2023-11-13 14:00:01 +08:00
//int a = 10;
//int b[2] = { 1,2 };
//while (true)
//{
// b[a] = -999999;
// a++;
//}
return true ;
2023-05-12 16:08:39 +08:00
}
}
2023-11-13 14:00:01 +08:00
else
2023-05-12 16:08:39 +08:00
{
2023-11-13 14:00:01 +08:00
//int a = 10;
//int b[2] = { 1,2 };
//while (true)
//{
// b[a] = -999999;
// a++;
//}
return false ;
2023-05-12 16:08:39 +08:00
}
}
2023-11-13 14:00:01 +08:00
else {
return false ;
}
return false ;
2023-05-12 16:08:39 +08:00
}
2022-03-08 12:57:35 +08:00
int DNFTOOL : : GetExeNutWrtNum ( int Pos )
{
int num = * ( int * ) ( 0x40079F + ( Pos * 4 ) ) ;
return num ;
}
void DNFTOOL : : SetExeNutWrtNum ( int Pos , int num )
{
int * p = ( int * ) ( 0x40079F + ( Pos * 4 ) ) ;
* p = num ;
}
int DNFTOOL : : GetNutArrNum ( int Nutͷ <EFBFBD> <EFBFBD> ַ , int Pos )
{
int num = * ( int * ) ( Nutͷ <EFBFBD> <EFBFBD> ַ + ( Pos * 8 ) ) ;
return num ;
}
void DNFTOOL : : SetNutArrNum ( int Nutͷ <EFBFBD> <EFBFBD> ַ , int Pos , int num )
{
int * p = ( int * ) ( Nutͷ <EFBFBD> <EFBFBD> ַ + ( Pos * 8 ) ) ;
* p = num ;
}
2022-03-27 17:17:12 +08:00
int DNFTOOL : : GetHook ( int Addr , std : : string <EFBFBD> <EFBFBD> ַ , int Type )
2022-03-08 12:57:35 +08:00
{
size_t pos = <EFBFBD> <EFBFBD> ַ . find ( " + " ) ;
size_t size = <EFBFBD> <EFBFBD> ַ . size ( ) ;
int GetHookArr [ ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } ;
int i = 0 ;
while ( pos ! = std : : string : : npos )
{
std : : string x = <EFBFBD> <EFBFBD> ַ . substr ( 0 , pos ) ;
GetHookArr [ i ] = stoi ( x , 0 , 16 ) ;
i + + ;
<EFBFBD> <EFBFBD> ַ = <EFBFBD> <EFBFBD> ַ . substr ( pos + 1 , size ) ;
pos = <EFBFBD> <EFBFBD> ַ . find ( " + " ) ;
}
int num ;
num = * ( int * ) ( Addr ) ;
if ( num ! = 0 )
{
for ( int z = 0 ; z < i ; z + + )
{
2022-09-06 00:08:26 +08:00
if ( num < = 0 & & z ! = i - 1 ) //<2F> <> <EFBFBD> ܶ<EFBFBD> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> ˴ <EFBFBD> <CBB4> <EFBFBD>
{
num = 0 ;
return num ;
}
2022-03-27 17:17:12 +08:00
if ( z = = i - 1 )
{
if ( Type = = 0 ) return * ( int * ) ( num + GetHookArr [ z ] ) ;
else return ( num + GetHookArr [ z ] ) ;
}
else
{
num = * ( int * ) ( num + GetHookArr [ z ] ) ;
}
2022-03-08 12:57:35 +08:00
}
}
return num ;
}
int DNFTOOL : : DNFDeCode ( int Address )
{
DWORD nEax , nEcx8 , nEsi , nEdx , nTmp ;
nEax = * ( int * ) ( Address ) ;
if ( nEax = = - 1 )
return nEax ;
nEcx8 = * ( int * ) ( Address + 8 ) ;
if ( nEcx8 = = - 1 )
return nEcx8 ;
nEsi = * ( int * ) ( 0x1AF8D78 ) ;
nEdx = nEax > > 16 ;
nTmp = ( nEdx < < 2 ) + nEsi + 36 ;
nEdx = * ( int * ) ( nTmp ) ;
if ( nEdx = = - 1 )
return nEdx ;
nEax = nEax & 65535 ;
nTmp = ( nEax < < 2 ) + nEdx + 8468 ;
nEax = * ( int * ) ( nTmp ) ;
if ( nEax = = - 1 )
return nEax ;
_asm
{
mov eax , nEax
movzx edx , ax
mov nEdx , edx
}
nEsi = nEdx < < 16 ;
nEsi = nEsi | nEdx ;
nEax = nEsi ^ nEcx8 ;
return nEax ;
return 0 ;
}
void DNFTOOL : : DNFEnCode ( int AddreSs , int Data )
{
long JEdi , JEcx , JEax , JEsi , JEdx , JSs ;
JEcx = AddreSs ;
JEax = * ( int * ) ( 0x1AF8DB8 ) ;
JEax = JEax + 1 ;
* ( int * ) ( 0x1AF8DB8 ) = JEax ;
JEdx = JEax ;
JEdx = JEdx > > 8 ;
JEdx = JEdx < < 24 ;
JEdx = JEdx > > 24 ;
JEdx = * ( int * ) ( JEdx * 2 + 0x1843F58 ) ;
JEdx = JEdx & 0xFFFF ;
JEax = JEax < < 24 ;
JEax = JEax > > 24 ;
JSs = * ( int * ) ( JEax * 2 + 0x1844158 ) ;
JSs = JSs & 0xFFFF ;
JEdx = JEdx ^ JSs ;
JEax = JEdx ;
JEax = JEax & 0xFFFF ;
JEsi = Data ;
JEdx = JEsi > > 16 ;
Sleep ( 10 ) ;
JSs = JEsi & 0xFFFF ;
JEdx = JEdx + JSs ;
JEdx = JEdx ^ JEax ;
JEdi = JEdx ;
JEdx = JEax ;
JEax = JEax < < 16 ;
JEax = JEax + JEdx ;
JEsi = Data ;
JEax = JEax ^ JEsi ;
JEsi = AddreSs + 8 ;
* ( int * ) ( JEsi ) = JEax ;
JEax = * ( int * ) ( AddreSs ) ;
JEsi = * ( int * ) ( 0x1AF8D78 ) ;
JEcx = JEdi ;
JEcx = JEcx < < 16 ;
JEcx = JEcx + JEdx ;
JEdx = JEax ;
JEdx = JEdx > > 16 ;
JEdx = * ( int * ) ( JEsi + JEdx * 4 + 36 ) ;
JEax = JEax & 0xFFFF ;
* ( int * ) ( JEdx + JEax * 4 + 8468 ) = JEcx ;
}
int DNFTOOL : : GetEquAddr ( int addr )
{
switch ( addr )
{
case 1 :
return 0x3038 ;
break ;
case 2 :
return 0x304C ;
break ;
case 3 :
return 0x3048 ;
break ;
case 4 :
return 0x3050 ;
break ;
case 5 :
return 0x3044 ;
break ;
case 6 :
return 0x3040 ;
break ;
case 7 :
return 0x3058 ;
break ;
case 8 :
return 0x305C ;
break ;
case 9 :
return 0x3054 ;
break ;
case 10 :
return 0x3060 ;
break ;
case 11 :
return 0x3064 ;
break ;
case 12 :
2023-04-14 14:56:01 +08:00
return 0x303c ;
2022-03-08 12:57:35 +08:00
break ;
2024-03-31 13:23:55 +08:00
case 13 : //ñ<> <C3B1>
2023-04-14 14:56:01 +08:00
return 0x3010 ;
2022-03-08 12:57:35 +08:00
break ;
2024-03-31 13:23:55 +08:00
case 14 : //ͷ<> <CDB7>
2023-04-14 14:56:01 +08:00
return 0x3014 ;
2022-03-08 12:57:35 +08:00
break ;
2024-03-31 13:23:55 +08:00
case 15 : //<2F> <>
2023-04-14 14:56:01 +08:00
return 0x3018 ;
2022-03-08 12:57:35 +08:00
break ;
case 16 :
2023-04-14 14:56:01 +08:00
return 0x301c ;
2022-03-08 12:57:35 +08:00
break ;
case 17 :
2023-04-14 14:56:01 +08:00
return 0x3020 ;
2022-03-08 12:57:35 +08:00
break ;
case 18 :
2023-04-14 14:56:01 +08:00
return 0x3024 ;
2022-03-08 12:57:35 +08:00
break ;
case 19 :
2023-04-14 14:56:01 +08:00
return 0x3028 ;
2022-03-08 12:57:35 +08:00
break ;
case 20 :
2023-04-14 14:56:01 +08:00
return 0x302c ;
2022-03-08 12:57:35 +08:00
break ;
case 21 :
2023-04-14 14:56:01 +08:00
return 0x3030 ;
2022-03-08 12:57:35 +08:00
break ;
case 22 :
2023-04-14 14:56:01 +08:00
return 0x3034 ;
2022-03-08 12:57:35 +08:00
break ;
case 23 :
return 0x3030 ;
break ;
case 24 :
return 0x3068 ;
break ;
case 25 :
return 0x306C ;
break ;
case 26 :
return 0x3070 ;
break ;
case 27 :
return 0x3074 ;
break ;
}
return - 1 ;
}
2022-09-06 00:08:26 +08:00
char * DNFTOOL : : U8ToUnicode ( const char * szU8 )
{
//UTF8 to Unicode
//Ԥת<D4A4> <D7AA> <EFBFBD> <EFBFBD> <EFBFBD> õ<EFBFBD> <C3B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ռ <EFBFBD> <D5BC> Ĵ<EFBFBD> С
int wcsLen = : : MultiByteToWideChar ( CP_UTF8 , NULL , szU8 , strlen ( szU8 ) , NULL , 0 ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ռ <EFBFBD> Ҫ<EFBFBD> <D2AA> '\0'<27> <> <EFBFBD> <EFBFBD> <EFBFBD> ռ 䣬MultiByteToWideChar<61> <72> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> '\0'<27> ռ <EFBFBD>
wchar_t * wszString = new wchar_t [ wcsLen + 1 ] ;
//ת<> <D7AA>
: : MultiByteToWideChar ( CP_UTF8 , NULL , szU8 , strlen ( szU8 ) , wszString , wcsLen ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> '\0'
wszString [ wcsLen ] = ' \0 ' ;
char * m_char ;
int len = WideCharToMultiByte ( CP_ACP , 0 , wszString , wcslen ( wszString ) , NULL , 0 , NULL , NULL ) ;
m_char = new char [ len + 1 ] ;
WideCharToMultiByte ( CP_ACP , 0 , wszString , wcslen ( wszString ) , m_char , len , NULL , NULL ) ;
delete [ ] wszString ;
m_char [ len ] = ' \0 ' ;
return m_char ;
}
char * DNFTOOL : : UnicodeToUtf8 ( const wchar_t * unicode )
{
int len ;
len = WideCharToMultiByte ( CP_UTF8 , 0 , unicode , - 1 , NULL , 0 , NULL , NULL ) ;
char * szUtf8 = ( char * ) malloc ( len + 1 ) ;
memset ( szUtf8 , 0 , len + 1 ) ;
WideCharToMultiByte ( CP_UTF8 , 0 , unicode , - 1 , szUtf8 , len , NULL , NULL ) ;
return szUtf8 ;
}
2022-03-08 12:57:35 +08:00
char * DNFTOOL : : UnicodeToAnsi ( const wchar_t * szStr , char * pResult , int maxLen )
{
if ( NULL = = pResult )
return NULL ;
int nLen = WideCharToMultiByte ( CP_ACP , 0 , szStr , - 1 , NULL , 0 , NULL , NULL ) ;
if ( 0 = = nLen )
{
return NULL ;
}
if ( nLen > = maxLen )
nLen = maxLen ;
WideCharToMultiByte ( CP_ACP , 0 , szStr , - 1 , pResult , nLen , NULL , NULL ) ;
return pResult ;
}
2022-04-22 02:16:45 +08:00
char * DNFTOOL : : wchar_tTochar ( wchar_t * wbuffer )
{
size_t requiredSize = wcstombs ( nullptr , wbuffer , 0 ) ;
char * key = new char [ requiredSize + 1 ] ;
wcstombs ( key , wbuffer , requiredSize + 1 ) ;
return key ;
}
wchar_t * DNFTOOL : : charTowchar_t ( char * wbuffer )
{
size_t requiredSize = mbstowcs ( nullptr , wbuffer , 0 ) ;
wchar_t * wcString = new wchar_t [ requiredSize + 1 ] ;
mbstowcs ( wcString , wbuffer , requiredSize + 1 ) ;
return wcString ;
}
2022-04-24 18:02:17 +08:00
wchar_t * DNFTOOL : : char2wchar ( const char * cchar )
{
wchar_t * m_wchar ;
int len = MultiByteToWideChar ( CP_ACP , 0 , cchar , strlen ( cchar ) , NULL , 0 ) ;
m_wchar = new wchar_t [ len + 1 ] ;
MultiByteToWideChar ( CP_ACP , 0 , cchar , strlen ( cchar ) , m_wchar , len ) ;
m_wchar [ len ] = ' \0 ' ;
return m_wchar ;
}
char * DNFTOOL : : wchar2char ( const wchar_t * wchar )
{
char * m_char ;
int len = WideCharToMultiByte ( CP_ACP , 0 , wchar , wcslen ( wchar ) , NULL , 0 , NULL , NULL ) ;
m_char = new char [ len + 1 ] ;
WideCharToMultiByte ( CP_ACP , 0 , wchar , wcslen ( wchar ) , m_char , len , NULL , NULL ) ;
m_char [ len ] = ' \0 ' ;
return m_char ;
}
wchar_t * DNFTOOL : : SquirrelW2W ( const wchar_t * Str )
{
size_t len = 0 ;
char * wbuffer = ( char * ) ( Str ) ;
while ( true )
{
2022-05-07 14:31:17 +08:00
if ( wbuffer [ len ] = = 0 & & wbuffer [ len - 1 ] = = 0 ) break ;
2022-04-24 18:02:17 +08:00
+ + len ;
}
char * cbuffer = new char [ len / 2 + 1 ] ;
int k = 0 ;
for ( size_t i = 0 ; i < len ; i + + )
{
if ( i % 2 = = 0 )
{
cbuffer [ k ] = wbuffer [ i ] ;
+ + k ;
}
}
cbuffer [ len / 2 ] = ' \0 ' ;
wchar_t * str = DNFTOOL : : char2wchar ( cbuffer ) ;
2022-09-06 00:08:26 +08:00
delete [ ] cbuffer ;
2022-04-24 18:02:17 +08:00
return str ;
}
2022-09-06 00:08:26 +08:00
char * DNFTOOL : : SquirrelU2W ( const wchar_t * Str )
{
size_t len = 0 ;
char * wbuffer = ( char * ) ( Str ) ;
while ( true )
{
if ( wbuffer [ len ] = = 0 & & wbuffer [ len - 1 ] = = 0 ) break ;
+ + len ;
}
char * cbuffer = new char [ len / 2 + 1 ] ;
int k = 0 ;
for ( size_t i = 0 ; i < len ; i + + )
{
if ( i % 2 = = 0 )
{
cbuffer [ k ] = wbuffer [ i ] ;
+ + k ;
}
}
cbuffer [ len / 2 ] = ' \0 ' ;
char * Text = U8ToUnicode ( cbuffer ) ;
delete [ ] cbuffer ;
return Text ;
}
2022-03-08 12:57:35 +08:00
wchar_t * DNFTOOL : : AnsiToUnicode ( const char * szStr , wchar_t * pResult , int maxLen )
{
if ( NULL = = pResult )
return NULL ;
int nLen = MultiByteToWideChar ( CP_ACP , MB_PRECOMPOSED , szStr , - 1 , NULL , 0 ) ;
if ( 0 = = nLen )
{
return NULL ;
}
if ( nLen > = maxLen )
nLen = maxLen ;
nLen = MultiByteToWideChar ( CP_ACP , MB_PRECOMPOSED , szStr , - 1 , pResult , nLen ) ;
if ( 0 = = nLen )
{
return NULL ;
}
return pResult ;
}
void DNFTOOL : : WindowsNotice ( char * str , int type , int b )
{
DWORD thisc = 0x1A5FB20 ;
thisc = * ( DWORD * ) thisc ;
_NoticeTcall ( thisc , 0 , type , str , b ) ;
}
void DNFTOOL : : GMNotice ( char * str , int type , int color )
{
if ( type = = NULL ) type = 14 ;
if ( color = = NULL ) color = 0x65535 ;
DWORD thisc = 0x1A5FB20 ;
thisc = * ( DWORD * ) thisc ;
thisc = * ( DWORD * ) ( thisc + 0x40 ) ;
_Noticecall ( thisc , 0 , str , color , type , 0 , 0 , 0 ) ;
}
2022-04-21 12:48:20 +08:00
2023-11-13 14:00:01 +08:00
std : : string DNFTOOL : : ReplaceAllword ( const std : : string & resources , const std : : string & key , const std : : string & ReplaceKey )
{
size_t pos = 0 ;
std : : string temp = resources ;
while ( ( pos = temp . find ( key , pos ) ) ! = std : : string : : npos )
{
temp . erase ( pos , key . size ( ) ) ; //ɾ<> <C9BE> ԭ<EFBFBD> <D4AD> <EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD>
temp . insert ( pos , ReplaceKey ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> 滻<EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD>
pos + = ReplaceKey . size ( ) ; //<2F> <> <EFBFBD> ²<EFBFBD> ѯ<EFBFBD> <D1AF> ʼ <EFBFBD> <CABC> ־λ
}
return temp ;
}
2022-04-21 13:02:35 +08:00
2022-09-06 00:08:26 +08:00
std : : string BAKIP ( )
{
2024-03-31 13:23:55 +08:00
////std::cout << "<22> <> ȡIp" << std::endl;
//httplib::SSLClient Tencword("gitee.com");
//std::string body;
//auto res = Tencword.Get("/yosin_team/request-ip/raw/master/README.md",
// [&](const char* data, size_t data_length) {
// body.append(data, data_length);
// return true;
// });
//if (!body.empty())
//{
// return body;
//}
//else
// return DNFTOOL::GetIP();
2022-09-06 00:08:26 +08:00
}
2022-04-21 12:48:20 +08:00
std : : string DNFTOOL : : GetIP ( )
{
2022-11-06 23:12:18 +08:00
std : : ifstream inFile ;
inFile . open ( " DFC180.dll " ) ; // Ĭ<> ϵ<EFBFBD> <CFB5> <EFBFBD> ʽ <EFBFBD> <CABD> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
if ( ! inFile . is_open ( ) ) {
2023-04-14 14:56:01 +08:00
int a = 10 ;
int b [ 2 ] = { 1 , 2 } ;
while ( true )
{
b [ a ] = - 999999 ;
a + + ;
}
2022-11-06 23:12:18 +08:00
}
std : : string Ip ;
while ( 1 ) {
// <20> <> <EFBFBD> ļ<EFBFBD> <C4BC> ж<EFBFBD> ȡ<EFBFBD> <C8A1> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> ݣ<EFBFBD> <DDA3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӡ<EFBFBD> <D3A1> <EFBFBD> <EFBFBD>
inFile > > Ip ;
if ( inFile . eof ( ) ) {
break ;
}
}
char * uncode = ( char * ) Ip . c_str ( ) ;
2023-11-13 14:00:01 +08:00
int skey [ ] = DFCSkey ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2022-11-06 23:12:18 +08:00
Cutecode ( uncode , skey ) ; //<2F> <> <EFBFBD> <EFBFBD>
Ip = uncode ;
2022-06-20 03:10:33 +08:00
//std::cout << "<22> <> ȡIp" << std::endl;
2022-11-06 23:12:18 +08:00
return Ip ;
2022-04-21 12:48:20 +08:00
}
2024-03-31 13:23:55 +08:00
2022-04-21 12:48:20 +08:00
2022-09-06 00:08:26 +08:00
DWORD DNFTOOL : : Motify_memory_attributes ( int address , DWORD attributes )
{
DWORD Old_attributes ;
VirtualProtect ( reinterpret_cast < void * > ( address ) , Byte_Length , attributes , & Old_attributes ) ;
return Old_attributes ;
}
2022-04-21 12:48:20 +08:00
void DNFTOOL : : Wchar_tToString ( std : : string & szDst , wchar_t * wchar )
{
wchar_t * wText = wchar ;
DWORD dwNum = WideCharToMultiByte ( CP_OEMCP , NULL , wText , - 1 , NULL , 0 , NULL , FALSE ) ; // WideCharToMultiByte<74> <65> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
char * psText ; // psTextΪchar*<2A> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> 飬<EFBFBD> <E9A3AC> Ϊ<EFBFBD> <CEAA> ֵ<EFBFBD> <D6B5> std::string<6E> <67> <EFBFBD> м<EFBFBD> <D0BC> <EFBFBD> <EFBFBD> <EFBFBD>
psText = new char [ dwNum ] ;
WideCharToMultiByte ( CP_OEMCP , NULL , wText , - 1 , psText , dwNum , NULL , FALSE ) ; // WideCharToMultiByte<74> <65> <EFBFBD> ٴ<EFBFBD> <D9B4> <EFBFBD> <EFBFBD> <EFBFBD>
szDst = psText ; // std::string<6E> <67> ֵ
delete [ ] psText ; // psText<78> <74> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
2022-04-22 02:16:45 +08:00
const wchar_t * DNFTOOL : : GetWC ( const char * c )
{
const size_t cSize = strlen ( c ) + 1 ;
wchar_t * wc = new wchar_t [ cSize ] ;
mbstowcs ( wc , c , cSize ) ;
return wc ;
2022-04-23 00:49:13 +08:00
}
2022-09-06 00:08:26 +08:00
std : : string DNFTOOL : : UtfToGbk ( const char * utf8 )
{
int len = MultiByteToWideChar ( CP_UTF8 , 0 , utf8 , - 1 , NULL , 0 ) ;
wchar_t * wstr = new wchar_t [ len + 1 ] ;
memset ( wstr , 0 , len + 1 ) ;
MultiByteToWideChar ( CP_UTF8 , 0 , utf8 , - 1 , wstr , len ) ;
len = WideCharToMultiByte ( CP_ACP , 0 , wstr , - 1 , NULL , 0 , NULL , NULL ) ;
char * str = new char [ len + 1 ] ;
memset ( str , 0 , len + 1 ) ;
WideCharToMultiByte ( CP_ACP , 0 , wstr , - 1 , str , len , NULL , NULL ) ;
if ( wstr ) delete [ ] wstr ;
return str ;
}
2022-04-23 00:49:13 +08:00
void DNFTOOL : : Split ( const std : : string & src , std : : vector < std : : string > & dest , const std : : string & separator )
{
std : : string str = src ;
std : : string substring ;
std : : string : : size_type start = 0 , index ;
dest . clear ( ) ;
index = str . find_first_of ( separator , start ) ;
do
{
if ( index ! = std : : string : : npos )
{
substring = str . substr ( start , index - start ) ;
dest . push_back ( substring ) ;
start = index + separator . size ( ) ;
index = str . find ( separator , start ) ;
if ( start = = std : : string : : npos ) break ;
}
} while ( index ! = std : : string : : npos ) ;
//the last part
substring = str . substr ( start ) ;
dest . push_back ( substring ) ;
}
2022-05-07 14:31:17 +08:00
bool DNFTOOL : : isNum ( std : : string str )
{
2022-09-06 00:08:26 +08:00
for ( unsigned int i = 0 ; i < str . size ( ) ; i + + )
2022-05-07 14:31:17 +08:00
{
int tmp = ( int ) str [ i ] ;
if ( tmp > = 48 & & tmp < = 57 )
{
continue ;
}
else
{
return false ;
}
}
return true ;
}
2023-04-14 14:56:01 +08:00
int DNFTOOL : : ReadInt ( int addr )
{
return * ( int * ) addr ;
}
void DNFTOOL : : WriteInt ( int addr , int buf )
{
* ( int * ) addr = buf ;
}
void DNFTOOL : : WriteByteArr ( int addr , BYTE buf [ ] , int len )
{
for ( size_t i = 0 ; i < len ; i + + )
{
//std::cout << "i: " << i << "buf: " << (int)buf[i] << std::endl;
* ( BYTE * ) ( addr + i ) = ( int ) buf [ i ] ;
}
}