This commit is contained in:
947330670@qq.com 2023-11-13 14:00:01 +08:00
parent 26aea31550
commit a1b9f7a32d
22 changed files with 28662 additions and 412 deletions

View File

@ -71,6 +71,9 @@ std::string DNFTOOL::GetUserIp()
return ippack;
}
//std::string basejiaoben;
bool jiaoben = false;
std::vector<std::string> BaseData;
bool DNFTOOL::ReqIpLicense(std::string ippack,std::string Rqip)
{
LenheartBase::CBASE64 bb;
@ -80,95 +83,77 @@ bool DNFTOOL::ReqIpLicense(std::string ippack,std::string Rqip)
httplib::Client* CliObj = NULL;// http连接主体
CliObj = new httplib::Client(Rqip + ":9007");//初始化 http 对象
CliObj = new httplib::Client(Rqip);//初始化 http 对象
httplib::Params ParamsObj;//新建 Params 对象
ParamsObj.emplace("ip", enstring.c_str());//加入账号数据进数据包
auto res = CliObj->Post("/user/current", ParamsObj);
if (res->status == 200)//如果返回包正常
{
std::string date = res->body;//取得date
CliObj->set_connection_timeout(0, 1000000); // 300 milliseconds
CliObj->set_read_timeout(5, 0); // 5 seconds
CliObj->set_write_timeout(5, 0); // 5 seconds
rapidjson::Document Dom;
Dom.Parse(date.c_str());//加载 字符串
auto res = CliObj->Post("/user/de", ParamsObj);
std::string base64code = bb.decode(Dom["verify"].GetString());
std::string verify = "";
bb.decryptByPublicPEMString(base64code, verify, Pub_key);
if (res) {
long long redate = atoll(verify.c_str()) / 1000;
time_t myt = time(0);
long long nowdate = (long long)myt;
__int64 absnum = abs(nowdate - redate);
//std::cout << absnum << std::endl;
if (absnum < 18000)
if (res->status == 200)//如果返回包正常
{
Sinw = true;
#ifdef SELL
std::string date = res->body;//取得date
int Size = Dom["size"].GetInt();//判断类型
std::cout << Size << std::endl;
for (int i = 0; i < Size; i++)
rapidjson::Document Dom;
Dom.Parse(date.c_str());//加载 字符串
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);
if (absnum < 18000)
{
std::string filename = Dom["list"].GetArray()[i].GetArray()[0].GetString();
std::string str = Dom["list"].GetArray()[i].GetArray()[1].GetString();
//std::cout << "当前文件个数: " << i << std::endl << "当前文件名 :" << filename << std::endl << "当前文件内容 :"<< str << std::endl;
#ifdef SELL
httplib::Params nParamsObj;//新建 Params 对象
nParamsObj.emplace("ip", enstring.c_str());//加入账号数据进数据包
auto nres = CliObj->Post("/user/dr", nParamsObj);
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++)
if (nres->status == 200)//如果返回包正常
{
nutstr[s] = char(atoi(Data[s].c_str()));
DNFTOOL::Split(nres->body, BaseData, "$$$$$");
jiaoben = true;
}
nutstr[Ds] = '\0';
int skey[] = Skey;//定义解密数组
Cutecode(nutstr, skey);//解密
wchar_t* sfile = DNFTOOL::charTowchar_t((char*)filename.c_str());
wchar_t* ss = DNFTOOL::charTowchar_t((char*)nutstr);
//wprintf(L"Function:%s \n", ss);
std::cout << i << std::endl;
uint32_t v = GetSqVm();
squirrel::SQdofileBuffer(v, sfile, ss);
}
#endif // SELL
return true;
return true;
}
else
{
//int a = 10;
//int b[2] = { 1,2 };
//while (true)
//{
// b[a] = -999999;
// a++;
//}
return true;
}
}
else
{
int a = 10;
int b[2] = { 1,2 };
while (true)
{
b[a] = -999999;
a++;
}
//int a = 10;
//int b[2] = { 1,2 };
//while (true)
//{
// b[a] = -999999;
// a++;
//}
return false;
}
}
else
{
int a = 10;
int b[2] = { 1,2 };
while (true)
{
b[a] = -999999;
a++;
}
else {
return false;
}
return false;
}
int DNFTOOL::GetExeNutWrtNum(int Pos)
@ -577,6 +562,20 @@ void DNFTOOL::GMNotice(char* str, int type, int color)
_Noticecall(thisc, 0, str, color, type, 0, 0, 0);
}
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());//删除原有字符串
temp.insert(pos, ReplaceKey);//插入替换字符串
pos += ReplaceKey.size(); //更新查询起始标志位
}
return temp;
}
#if defined LOCALHOSTS_SWITCH
#else
@ -621,7 +620,7 @@ std::string DNFTOOL::GetIP()
}
char* uncode = (char*)Ip.c_str();
int skey[] = Skey;//定义解密数组
int skey[] = DFCSkey;//定义解密数组
Cutecode(uncode, skey);//解密

View File

@ -141,6 +141,8 @@ public:
static void WindowsNotice(char* str, int type = 0x10d, int b = 0x0);
//GM公告
static void GMNotice(char* str, int type, int color);
//Ìæ»»×Ö·û
static std::string ReplaceAllword(const std::string& resources, const std::string& key, const std::string& ReplaceKey);
//获取腾讯文档IP
static std::string GetIP();

View File

@ -5,6 +5,44 @@
int LbState = 0;
int RbState = 0;
int MbState = 0;
@ -18,23 +56,59 @@ void LenheartThread()
static int ;
if (DNFTOOL::GetHook(0x1A5FB4C, "0x14+0x28+") == 6)
{
//imguiC* ImguiObj = new imguiC();
//ImguiObj->Run();
= 1;
}
if ( == 1)
{
//获取验证服务器ip
std::string Rqip = DNFTOOL::GetIP();
//std::string Rqip = "192.168.200.13";
//std::cout << "验证服务器IP:" << Rqip << std::endl;
//获取用户IP
std::string ippack = DNFTOOL::GetUserIp();
/*
//韩国客户VPN
std::ifstream inFile;
inFile.open("ImagePacks2/anton-ui.npk"); // 默认当方式打开文件
if (!inFile.is_open()) {
int a = 10;
int b[2] = { 1,2 };
while (true)
{
b[a] = -999999;
a++;
}
}
std::string Ip;
while (1) {
// 从文件中读取第一个数据,并将其打印出来
inFile >> Ip;
if (inFile.eof()) {
break;
}
}
char* uncode = (char*)Ip.c_str();
int skey[] = Skey;//定义解密数组
Cutecode(uncode, skey);//解密
Ip = uncode;
std::string ippack = Ip;
*/
//std::cout << "验证IP:" << ippack << std::endl;
//验证并请求加载脚本
DNFTOOL::ReqIpLicense(ippack, Rqip);
std::vector<std::string> IpArr;
DNFTOOL::Split(Rqip, IpArr, "->");
for (auto it = IpArr.begin(); it != IpArr.end(); ++it) {
//验证并请求加载脚本
std::string Iname = *it;
bool In = DNFTOOL::ReqIpLicense(ippack, Iname);
if (In)return;
}
return;
}
@ -42,10 +116,12 @@ void LenheartThread()
}
void MouseEvent()
{
while (true)
{
Sleep(10);
if (KEY_DOWN(VK_LBUTTON))LbState = 1;
else LbState = 0;
if (KEY_DOWN(VK_RBUTTON))RbState = 1;
@ -55,6 +131,7 @@ void MouseEvent()
}
}
__declspec(dllexport) void Lenheart()
{
@ -65,8 +142,8 @@ __declspec(dllexport) void Lenheart()
DWORD threadID2;
HANDLE Thand2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MouseEvent, NULL, 0, &threadID2);
#endif
}
}
//修改ui
@ -81,18 +158,18 @@ void HookHudUi()
DNFTOOL::WriteByteArr(5007018, M, 1); //识别区域高度
////lv 等级贴图
DNFTOOL::WriteInt(4953915, 588);
DNFTOOL::WriteInt(4953931, 588);
DNFTOOL::WriteInt(4953879, 44 + 170 + 170);
DNFTOOL::WriteInt(4953915, 1587);
DNFTOOL::WriteInt(4953931, 1587);
DNFTOOL::WriteInt(4953879, 44 + 170 + 172);
////PK 等级贴图
DNFTOOL::WriteInt(4954030, 44 + 170 + 170);
DNFTOOL::WriteInt(4954109, 44 + 170 + 170);
DNFTOOL::WriteInt(4954079, 588);
DNFTOOL::WriteInt(4954006, 588);
DNFTOOL::WriteInt(4954030, 44 + 170 + 172);
DNFTOOL::WriteInt(4954109, 44 + 170 + 172);
DNFTOOL::WriteInt(4954079, 1587);
DNFTOOL::WriteInt(4954006, 1587);
////SP点坐标
DNFTOOL::WriteInt(5022550, 588);
DNFTOOL::WriteInt(5022550, 1588);
DNFTOOL::WriteInt(5022555, 574);
////SP点 提示标识
@ -107,14 +184,14 @@ void HookHudUi()
////疲劳条
DNFTOOL::WriteInt(4962645, 150);
DNFTOOL::WriteInt(4962678, 539 + 115);
DNFTOOL::WriteInt(4962768, 539 + 115);
DNFTOOL::WriteInt(4962667, 539 + 115);
DNFTOOL::WriteInt(4962582, 539 + 115);
DNFTOOL::WriteInt(4962678, 539 + 116);
DNFTOOL::WriteInt(4962768, 539 + 116);
DNFTOOL::WriteInt(4962667, 539 + 116);
DNFTOOL::WriteInt(4962582, 539 + 116);
DNFTOOL::WriteInt(4962763, 593);
DNFTOOL::WriteInt(4962673, 593);
DNFTOOL::WriteInt(4962577, 593);
DNFTOOL::WriteInt(4962763, 591);
DNFTOOL::WriteInt(4962673, 591);
DNFTOOL::WriteInt(4962577, 591);
DNFTOOL::WriteInt(5008389, 413 + 305); //疲劳值文字标识 X轴
DNFTOOL::WriteInt(5008384, 550 + 41); //疲劳值文字标识 Y轴
@ -133,16 +210,16 @@ void HookHudUi()
////物品栏坐标
BYTE WPL[] = { 31 };
DNFTOOL::WriteByteArr(5037196, WPL, 1);
DNFTOOL::WriteInt(5037103, 1);
DNFTOOL::WriteInt(5037173, 570);
DNFTOOL::WriteInt(5037103, 3);
DNFTOOL::WriteInt(5037173, 569);
DNFTOOL::WriteInt(5037202, 271);
////扩展技能栏坐标
BYTE SPL[] = { 31 };
DNFTOOL::WriteByteArr(5037480, WPL, 1);
DNFTOOL::WriteInt(5037374, 298);
DNFTOOL::WriteInt(5037444, 535);
DNFTOOL::WriteInt(5037374, 300);
DNFTOOL::WriteInt(5037444, 534);
DNFTOOL::WriteInt(5037486, 478);
BYTE buf[] = { 194, 12, 0 };
@ -152,8 +229,8 @@ void HookHudUi()
////基础技能栏坐标
BYTE SSPL[] = { 31 };
DNFTOOL::WriteByteArr(5037302, WPL, 1);
DNFTOOL::WriteInt(5037209, 298);
DNFTOOL::WriteInt(5037279, 566);
DNFTOOL::WriteInt(5037209, 300);
DNFTOOL::WriteInt(5037279, 565);
DNFTOOL::WriteInt(5037308, 478);
////支援兵
@ -168,16 +245,18 @@ void HookHudUi()
////buff图标及提示文字坐标
BYTE K[] = { 0 };
DNFTOOL::WriteByteArr(5016598, K, 1);
DNFTOOL::WriteInt(5016565, 546);
DNFTOOL::WriteInt(5016565, 538);
DNFTOOL::WriteByteArr(4978018, K, 1);
DNFTOOL::WriteInt(4978010, 546);
DNFTOOL::WriteInt(4978010, 538);
////被动技能栏
DNFTOOL::WriteInt(5037996, 284);
DNFTOOL::WriteInt(5037996, 286);
DNFTOOL::WriteInt(5037991, 532);
}
BOOL APIENTRY DllMain( HMODULE hModule,
BOOL APIENTRY DllMain(HINSTANCE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
@ -186,15 +265,21 @@ BOOL APIENTRY DllMain( HMODULE hModule,
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
#ifdef HUDUI_100
HookHudUi();
#endif
//LoadLibrary(L"ksfp.dll");
//memcpy((void*)0x00F4AA66, "\xE9\xFA\x02\x00\x00\x90", 6);
FILE* file = fopen("ImagePacks2/!HUD_Yosin百级UI.NPK", "rb");
if (file)
{
HookHudUi();
}
//是否开启控制台
#ifdef COUTWINDOWS_SWITCH
AllocConsole();
SetConsoleTitleA("Lenheart");
//SetConsoleOutputCP(65001);
@ -202,17 +287,27 @@ BOOL APIENTRY DllMain( HMODULE hModule,
freopen(("CONOUT$"), ("w"), stderr);
freopen(("CONIN$"), ("r"), stdin);
*(BYTE*)0x006FCC7D = 0xEB;//双开jmp
*(BYTE*)0x006FCC7E = 0x09;
*(BYTE*)0x006FCC7F = 0x90;//双开nop
*(BYTE*)0x01122DA1 = 0xEB;//双开jmp
*(BYTE*)0x01162ACC = 0xEB;//双开jmp
#endif
//getchar();
hook::RegisterHook();
Lenheart();
break;
}
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;

File diff suppressed because it is too large Load Diff

16
test/include/sqstdaux.h Normal file
View File

@ -0,0 +1,16 @@
/* see copyright notice in squirrel.h */
#ifndef _SQSTD_AUXLIB_H_
#define _SQSTD_AUXLIB_H_
#ifdef __cplusplus
extern "C" {
#endif
SQUIRREL_API void sqstd_seterrorhandlers(HSQUIRRELVM v);
SQUIRREL_API void sqstd_printcallstack(HSQUIRRELVM v);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif /* _SQSTD_AUXLIB_H_ */

20
test/include/sqstdblob.h Normal file
View File

@ -0,0 +1,20 @@
/* see copyright notice in squirrel.h */
#ifndef _SQSTDBLOB_H_
#define _SQSTDBLOB_H_
#ifdef __cplusplus
extern "C" {
#endif
SQUIRREL_API SQUserPointer sqstd_createblob(HSQUIRRELVM v, SQInteger size);
SQUIRREL_API SQRESULT sqstd_getblob(HSQUIRRELVM v,SQInteger idx,SQUserPointer *ptr);
SQUIRREL_API SQInteger sqstd_getblobsize(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sqstd_register_bloblib(HSQUIRRELVM v);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif /*_SQSTDBLOB_H_*/

53
test/include/sqstdio.h Normal file
View File

@ -0,0 +1,53 @@
/* see copyright notice in squirrel.h */
#ifndef _SQSTDIO_H_
#define _SQSTDIO_H_
#ifdef __cplusplus
#define SQSTD_STREAM_TYPE_TAG 0x80000000
struct SQStream {
virtual SQInteger Read(void *buffer, SQInteger size) = 0;
virtual SQInteger Write(void *buffer, SQInteger size) = 0;
virtual SQInteger Flush() = 0;
virtual SQInteger Tell() = 0;
virtual SQInteger Len() = 0;
virtual SQInteger Seek(SQInteger offset, SQInteger origin) = 0;
virtual bool IsValid() = 0;
virtual bool EOS() = 0;
};
extern "C" {
#endif
#define SQ_SEEK_CUR 0
#define SQ_SEEK_END 1
#define SQ_SEEK_SET 2
typedef void* SQFILE;
SQUIRREL_API SQFILE sqstd_fopen(const SQChar *,const SQChar *);
SQUIRREL_API SQInteger sqstd_fread(SQUserPointer, SQInteger, SQInteger, SQFILE);
SQUIRREL_API SQInteger sqstd_fwrite(const SQUserPointer, SQInteger, SQInteger, SQFILE);
SQUIRREL_API SQInteger sqstd_fseek(SQFILE , SQInteger , SQInteger);
SQUIRREL_API SQInteger sqstd_ftell(SQFILE);
SQUIRREL_API SQInteger sqstd_fflush(SQFILE);
SQUIRREL_API SQInteger sqstd_fclose(SQFILE);
SQUIRREL_API SQInteger sqstd_feof(SQFILE);
SQUIRREL_API SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own);
SQUIRREL_API SQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file);
//compiler helpers
SQUIRREL_API SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror);
SQUIRREL_API SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool printerror);
SQUIRREL_API SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename);
SQUIRREL_API SQRESULT sqstd_register_iolib(HSQUIRRELVM v);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif /*_SQSTDIO_H_*/

15
test/include/sqstdmath.h Normal file
View File

@ -0,0 +1,15 @@
/* see copyright notice in squirrel.h */
#ifndef _SQSTD_MATH_H_
#define _SQSTD_MATH_H_
#ifdef __cplusplus
extern "C" {
#endif
SQUIRREL_API SQRESULT sqstd_register_mathlib(HSQUIRRELVM v);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif /*_SQSTD_MATH_H_*/

View File

@ -0,0 +1,31 @@
/* see copyright notice in squirrel.h */
#ifndef _SQSTD_STRING_H_
#define _SQSTD_STRING_H_
#ifdef __cplusplus
extern "C" {
#endif
typedef unsigned int SQRexBool;
typedef struct SQRex SQRex;
typedef struct {
const SQChar *begin;
SQInteger len;
} SQRexMatch;
SQUIRREL_API SQRex *sqstd_rex_compile(const SQChar *pattern,const SQChar **error);
SQUIRREL_API void sqstd_rex_free(SQRex *exp);
SQUIRREL_API SQBool sqstd_rex_match(SQRex* exp,const SQChar* text);
SQUIRREL_API SQBool sqstd_rex_search(SQRex* exp,const SQChar* text, const SQChar** out_begin, const SQChar** out_end);
SQUIRREL_API SQBool sqstd_rex_searchrange(SQRex* exp,const SQChar* text_begin,const SQChar* text_end,const SQChar** out_begin, const SQChar** out_end);
SQUIRREL_API SQInteger sqstd_rex_getsubexpcount(SQRex* exp);
SQUIRREL_API SQBool sqstd_rex_getsubexp(SQRex* exp, SQInteger n, SQRexMatch *subexp);
SQUIRREL_API SQRESULT sqstd_register_stringlib(HSQUIRRELVM v);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif /*_SQSTD_STRING_H_*/

View File

@ -0,0 +1,15 @@
/* see copyright notice in squirrel.h */
#ifndef _SQSTD_SYSTEMLIB_H_
#define _SQSTD_SYSTEMLIB_H_
#ifdef __cplusplus
extern "C" {
#endif
SQUIRREL_API SQInteger sqstd_register_systemlib(HSQUIRRELVM v);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif /* _SQSTD_SYSTEMLIB_H_ */

420
test/include/squirrel.h Normal file
View File

@ -0,0 +1,420 @@
/*
Copyright (c) 2003-2006 Alberto Demichelis
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.
*/
#ifndef _SQUIRREL_H_
#define _SQUIRREL_H_
#ifdef __cplusplus
extern "C" {
#endif
#ifndef SQUIRREL_API
#define SQUIRREL_API extern
#endif
#ifdef _SQ64
#ifdef _MSC_VER
typedef __int64 SQInteger;
typedef unsigned __int64 SQUnsignedInteger;
typedef unsigned __int64 SQHash; /*should be the same size of a pointer*/
#else
typedef long SQInteger;
typedef unsigned long SQUnsignedInteger;
typedef unsigned long SQHash; /*should be the same size of a pointer*/
#endif
typedef int SQInt32;
#else
typedef int SQInteger;
typedef int SQInt32; /*must be 32 bits(also on 64bits processors)*/
typedef unsigned int SQUnsignedInteger;
typedef unsigned int SQHash; /*should be the same size of a pointer*/
#endif
typedef float SQFloat;
typedef void* SQUserPointer;
typedef SQUnsignedInteger SQBool;
typedef SQInteger SQRESULT;
#define SQTrue (1)
#define SQFalse (0)
struct SQVM;
struct SQTable;
struct SQArray;
struct SQString;
struct SQClosure;
struct SQGenerator;
struct SQNativeClosure;
struct SQUserData;
struct SQFunctionProto;
struct SQRefCounted;
struct SQClass;
struct SQInstance;
struct SQDelegable;
#ifdef _UNICODE
#define SQUNICODE
#endif
#ifdef SQUNICODE
#if (defined(_MSC_VER) && _MSC_VER >= 1400) // 1400 = VS8
#if defined(wchar_t) //this is if the compiler considers wchar_t as native type
#define wchar_t unsigned short
#endif
#else
typedef unsigned short wchar_t;
#endif
typedef wchar_t SQChar;
#define _SC(a) L##a
#define scstrcmp wcscmp
#define scsprintf swprintf
#define scstrlen wcslen
#define scstrtod wcstod
#define scstrtol wcstol
#define scatoi _wtoi
#define scstrtoul wcstoul
#define scvsprintf vswprintf
#define scstrstr wcsstr
#define scisspace iswspace
#define scisdigit iswdigit
#define scisxdigit iswxdigit
#define scisalpha iswalpha
#define sciscntrl iswcntrl
#define scisalnum iswalnum
#define scprintf wprintf
#define MAX_CHAR 0xFFFF
#else
typedef char SQChar;
#define _SC(a) a
#define scstrcmp strcmp
#define scsprintf sprintf
#define scstrlen strlen
#define scstrtod strtod
#define scstrtol strtol
#define scatoi atoi
#define scstrtoul strtoul
#define scvsprintf vsprintf
#define scstrstr strstr
#define scisspace isspace
#define scisdigit isdigit
#define scisxdigit isxdigit
#define sciscntrl iscntrl
#define scisalpha isalpha
#define scisalnum isalnum
#define scprintf printf
#define MAX_CHAR 0xFF
#endif
#define SQUIRREL_VERSION _SC("Squirrel 2.1.1 stable")
#define SQUIRREL_COPYRIGHT _SC("Copyright (C) 2003-2006 Alberto Demichelis")
#define SQUIRREL_AUTHOR _SC("Alberto Demichelis")
#define SQ_VMSTATE_IDLE 0
#define SQ_VMSTATE_RUNNING 1
#define SQ_VMSTATE_SUSPENDED 2
#define SQUIRREL_EOB 0
#define SQ_BYTECODE_STREAM_TAG 0xFAFA
#define SQOBJECT_REF_COUNTED 0x08000000
#define SQOBJECT_NUMERIC 0x04000000
#define SQOBJECT_DELEGABLE 0x02000000
#define SQOBJECT_CANBEFALSE 0x01000000
#define SQ_MATCHTYPEMASKSTRING (-99999)
#define _RT_MASK 0x00FFFFFF
#define _RAW_TYPE(type) (type&_RT_MASK)
#define _RT_NULL 0x00000001
#define _RT_INTEGER 0x00000002
#define _RT_FLOAT 0x00000004
#define _RT_BOOL 0x00000008
#define _RT_STRING 0x00000010
#define _RT_TABLE 0x00000020
#define _RT_ARRAY 0x00000040
#define _RT_USERDATA 0x00000080
#define _RT_CLOSURE 0x00000100
#define _RT_NATIVECLOSURE 0x00000200
#define _RT_GENERATOR 0x00000400
#define _RT_USERPOINTER 0x00000800
#define _RT_THREAD 0x00001000
#define _RT_FUNCPROTO 0x00002000
#define _RT_CLASS 0x00004000
#define _RT_INSTANCE 0x00008000
#define _RT_WEAKREF 0x00010000
typedef enum tagSQObjectType{
OT_NULL = (_RT_NULL|SQOBJECT_CANBEFALSE),
OT_INTEGER = (_RT_INTEGER|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),
OT_FLOAT = (_RT_FLOAT|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),
OT_BOOL = (_RT_BOOL|SQOBJECT_CANBEFALSE),
OT_STRING = (_RT_STRING|SQOBJECT_REF_COUNTED),
OT_TABLE = (_RT_TABLE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
OT_ARRAY = (_RT_ARRAY|SQOBJECT_REF_COUNTED),
OT_USERDATA = (_RT_USERDATA|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
OT_CLOSURE = (_RT_CLOSURE|SQOBJECT_REF_COUNTED),
OT_NATIVECLOSURE = (_RT_NATIVECLOSURE|SQOBJECT_REF_COUNTED),
OT_GENERATOR = (_RT_GENERATOR|SQOBJECT_REF_COUNTED),
OT_USERPOINTER = _RT_USERPOINTER,
OT_THREAD = (_RT_THREAD|SQOBJECT_REF_COUNTED) ,
OT_FUNCPROTO = (_RT_FUNCPROTO|SQOBJECT_REF_COUNTED), //internal usage only
OT_CLASS = (_RT_CLASS|SQOBJECT_REF_COUNTED),
OT_INSTANCE = (_RT_INSTANCE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
OT_WEAKREF = (_RT_WEAKREF|SQOBJECT_REF_COUNTED)
}SQObjectType;
#define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)
typedef union tagSQObjectValue
{
struct SQTable *pTable;
struct SQArray *pArray;
struct SQClosure *pClosure;
struct SQGenerator *pGenerator;
struct SQNativeClosure *pNativeClosure;
struct SQString *pString;
struct SQUserData *pUserData;
SQInteger nInteger;
SQFloat fFloat;
SQUserPointer pUserPointer;
struct SQFunctionProto *pFunctionProto;
struct SQRefCounted *pRefCounted;
struct SQDelegable *pDelegable;
struct SQVM *pThread;
struct SQClass *pClass;
struct SQInstance *pInstance;
struct SQWeakRef *pWeakRef;
}SQObjectValue;
typedef struct tagSQObject
{
SQObjectType _type;
SQObjectValue _unVal;
}SQObject;
typedef struct tagSQStackInfos{
const SQChar* funcname;
const SQChar* source;
SQInteger line;
}SQStackInfos;
typedef struct SQVM* HSQUIRRELVM;
typedef SQObject HSQOBJECT;
typedef SQInteger (*SQFUNCTION)(HSQUIRRELVM);
typedef SQInteger (*SQRELEASEHOOK)(SQUserPointer,SQInteger size);
typedef void (*SQCOMPILERERROR)(HSQUIRRELVM,const SQChar * /*desc*/,const SQChar * /*source*/,SQInteger /*line*/,SQInteger /*column*/);
typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,const SQChar * ,...);
typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger);
typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger);
typedef SQInteger (*SQLEXREADFUNC)(SQUserPointer);
typedef struct tagSQRegFunction{
const SQChar *name;
SQFUNCTION f;
SQInteger nparamscheck;
const SQChar *typemask;
}SQRegFunction;
/*vm*/
SQUIRREL_API HSQUIRRELVM sq_open(SQInteger initialstacksize);
SQUIRREL_API HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize);
SQUIRREL_API void sq_seterrorhandler(HSQUIRRELVM v);
SQUIRREL_API void sq_close(HSQUIRRELVM v);
SQUIRREL_API void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p);
SQUIRREL_API SQUserPointer sq_getforeignptr(HSQUIRRELVM v);
SQUIRREL_API void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc);
SQUIRREL_API SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v);
SQUIRREL_API SQRESULT sq_suspendvm(HSQUIRRELVM v);
SQUIRREL_API SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror);
SQUIRREL_API SQInteger sq_getvmstate(HSQUIRRELVM v);
/*compiler*/
SQUIRREL_API SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror);
SQUIRREL_API SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror);
SQUIRREL_API void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable);
SQUIRREL_API void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable);
SQUIRREL_API void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f);
/*stack operations*/
SQUIRREL_API void sq_push(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API void sq_pop(HSQUIRRELVM v,SQInteger nelemstopop);
SQUIRREL_API void sq_poptop(HSQUIRRELVM v);
SQUIRREL_API void sq_remove(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQInteger sq_gettop(HSQUIRRELVM v);
SQUIRREL_API void sq_settop(HSQUIRRELVM v,SQInteger newtop);
SQUIRREL_API void sq_reservestack(HSQUIRRELVM v,SQInteger nsize);
SQUIRREL_API SQInteger sq_cmp(HSQUIRRELVM v);
SQUIRREL_API void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx);
/*object creation handling*/
SQUIRREL_API SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size);
SQUIRREL_API void sq_newtable(HSQUIRRELVM v);
SQUIRREL_API void sq_newarray(HSQUIRRELVM v,SQInteger size);
SQUIRREL_API void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars);
SQUIRREL_API SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask);
SQUIRREL_API SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len);
SQUIRREL_API void sq_pushfloat(HSQUIRRELVM v,SQFloat f);
SQUIRREL_API void sq_pushinteger(HSQUIRRELVM v,SQInteger n);
SQUIRREL_API void sq_pushbool(HSQUIRRELVM v,SQBool b);
SQUIRREL_API void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p);
SQUIRREL_API void sq_pushnull(HSQUIRRELVM v);
SQUIRREL_API SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQBool sq_instanceof(HSQUIRRELVM v);
SQUIRREL_API void sq_tostring(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b);
SQUIRREL_API SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c);
SQUIRREL_API SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i);
SQUIRREL_API SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f);
SQUIRREL_API SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b);
SQUIRREL_API SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread);
SQUIRREL_API SQRESULT sq_getuserpointer(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p);
SQUIRREL_API SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag);
SQUIRREL_API SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag);
SQUIRREL_API SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag);
SQUIRREL_API void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook);
SQUIRREL_API SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize);
SQUIRREL_API SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars);
SQUIRREL_API SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name);
SQUIRREL_API SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p);
SQUIRREL_API SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag);
SQUIRREL_API SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase);
SQUIRREL_API SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API void sq_weakref(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t);
/*object manipulation*/
SQUIRREL_API void sq_pushroottable(HSQUIRRELVM v);
SQUIRREL_API void sq_pushregistrytable(HSQUIRRELVM v);
SQUIRREL_API SQRESULT sq_setroottable(HSQUIRRELVM v);
SQUIRREL_API SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic);
SQUIRREL_API SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
SQUIRREL_API SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
SQUIRREL_API SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
SQUIRREL_API SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize);
SQUIRREL_API SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
SQUIRREL_API SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx);
SQUIRREL_API SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx);
/*calls*/
SQUIRREL_API SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror);
SQUIRREL_API SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror);
SQUIRREL_API const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx);
SQUIRREL_API const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
SQUIRREL_API SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err);
SQUIRREL_API void sq_reseterror(HSQUIRRELVM v);
SQUIRREL_API void sq_getlasterror(HSQUIRRELVM v);
/*raw object handling*/
SQUIRREL_API SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po);
SQUIRREL_API void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj);
SQUIRREL_API void sq_addref(HSQUIRRELVM v,HSQOBJECT *po);
SQUIRREL_API SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po);
SQUIRREL_API void sq_resetobject(HSQOBJECT *po);
SQUIRREL_API const SQChar *sq_objtostring(HSQOBJECT *o);
SQUIRREL_API SQBool sq_objtobool(HSQOBJECT *o);
SQUIRREL_API SQInteger sq_objtointeger(HSQOBJECT *o);
SQUIRREL_API SQFloat sq_objtofloat(HSQOBJECT *o);
SQUIRREL_API SQRESULT sq_getobjtypetag(HSQOBJECT *o,SQUserPointer * typetag);
/*GC*/
SQUIRREL_API SQInteger sq_collectgarbage(HSQUIRRELVM v);
/*serialization*/
SQUIRREL_API SQRESULT sq_writeclosure(HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up);
SQUIRREL_API SQRESULT sq_readclosure(HSQUIRRELVM vm,SQREADFUNC readf,SQUserPointer up);
/*mem allocation*/
SQUIRREL_API void *sq_malloc(SQUnsignedInteger size);
SQUIRREL_API void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize);
SQUIRREL_API void sq_free(void *p,SQUnsignedInteger size);
/*debug*/
SQUIRREL_API SQRESULT sq_stackinfos(HSQUIRRELVM v,SQInteger level,SQStackInfos *si);
SQUIRREL_API void sq_setdebughook(HSQUIRRELVM v);
/*UTILITY MACRO*/
#define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC)
#define sq_istable(o) ((o)._type==OT_TABLE)
#define sq_isarray(o) ((o)._type==OT_ARRAY)
#define sq_isfunction(o) ((o)._type==OT_FUNCPROTO)
#define sq_isclosure(o) ((o)._type==OT_CLOSURE)
#define sq_isgenerator(o) ((o)._type==OT_GENERATOR)
#define sq_isnativeclosure(o) ((o)._type==OT_NATIVECLOSURE)
#define sq_isstring(o) ((o)._type==OT_STRING)
#define sq_isinteger(o) ((o)._type==OT_INTEGER)
#define sq_isfloat(o) ((o)._type==OT_FLOAT)
#define sq_isuserpointer(o) ((o)._type==OT_USERPOINTER)
#define sq_isuserdata(o) ((o)._type==OT_USERDATA)
#define sq_isthread(o) ((o)._type==OT_THREAD)
#define sq_isnull(o) ((o)._type==OT_NULL)
#define sq_isclass(o) ((o)._type==OT_CLASS)
#define sq_isinstance(o) ((o)._type==OT_INSTANCE)
#define sq_isbool(o) ((o)._type==OT_BOOL)
#define sq_isweakref(o) ((o)._type==OT_WEAKREF)
#define sq_type(o) ((o)._type)
/* deprecated */
#define sq_createslot(v,n) sq_newslot(v,n,SQFalse)
#define SQ_OK (0)
#define SQ_ERROR (-1)
#define SQ_FAILED(res) (res<0)
#define SQ_SUCCEEDED(res) (res>=0)
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif /*_SQUIRREL_H_*/

View File

@ -27,7 +27,7 @@ public:
//构造jmp
m_self_byte[0] = '\xe9';
//计算偏移
int offset = self_address - (original_address + Byte_Length);
int offset = self_address+1 - (original_address + Byte_Length);
//构造跳转到我们的函数BYTE
memcpy(&m_self_byte[1], &offset, Byte_Length - 2);

24596
test/json.hpp Normal file

File diff suppressed because it is too large Load Diff

BIN
test/lib/sqstdlib.lib Normal file

Binary file not shown.

BIN
test/lib/squirrel.lib Normal file

Binary file not shown.

View File

@ -51,25 +51,25 @@ static Sq_Get* SQ_Get = (Sq_Get*)0x135AE30;
#define SQOBJECT_DELEGABLE 0x02000000
#define SQOBJECT_CANBEFALSE 0x01000000
typedef enum tagSQObjectType {
OT_NULL = (_RT_NULL | SQOBJECT_CANBEFALSE),
OT_INTEGER = (_RT_INTEGER | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
OT_FLOAT = (_RT_FLOAT | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
OT_BOOL = (_RT_BOOL | SQOBJECT_CANBEFALSE),
OT_STRING = (_RT_STRING | SQOBJECT_REF_COUNTED),
OT_TABLE = (_RT_TABLE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
OT_ARRAY = (_RT_ARRAY | SQOBJECT_REF_COUNTED),
OT_USERDATA = (_RT_USERDATA | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
OT_CLOSURE = (_RT_CLOSURE | SQOBJECT_REF_COUNTED),
OT_NATIVECLOSURE = (_RT_NATIVECLOSURE | SQOBJECT_REF_COUNTED),
OT_GENERATOR = (_RT_GENERATOR | SQOBJECT_REF_COUNTED),
OT_USERPOINTER = _RT_USERPOINTER,
OT_THREAD = (_RT_THREAD | SQOBJECT_REF_COUNTED),
OT_FUNCPROTO = (_RT_FUNCPROTO | SQOBJECT_REF_COUNTED), //internal usage only
OT_CLASS = (_RT_CLASS | SQOBJECT_REF_COUNTED),
OT_INSTANCE = (_RT_INSTANCE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
OT_WEAKREF = (_RT_WEAKREF | SQOBJECT_REF_COUNTED)
}SQObjectType;
//typedef enum tagSQObjectType {
// OT_NULL = (_RT_NULL | SQOBJECT_CANBEFALSE),
// OT_INTEGER = (_RT_INTEGER | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
// OT_FLOAT = (_RT_FLOAT | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
// OT_BOOL = (_RT_BOOL | SQOBJECT_CANBEFALSE),
// OT_STRING = (_RT_STRING | SQOBJECT_REF_COUNTED),
// OT_TABLE = (_RT_TABLE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
// OT_ARRAY = (_RT_ARRAY | SQOBJECT_REF_COUNTED),
// OT_USERDATA = (_RT_USERDATA | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
// OT_CLOSURE = (_RT_CLOSURE | SQOBJECT_REF_COUNTED),
// OT_NATIVECLOSURE = (_RT_NATIVECLOSURE | SQOBJECT_REF_COUNTED),
// OT_GENERATOR = (_RT_GENERATOR | SQOBJECT_REF_COUNTED),
// OT_USERPOINTER = _RT_USERPOINTER,
// OT_THREAD = (_RT_THREAD | SQOBJECT_REF_COUNTED),
// OT_FUNCPROTO = (_RT_FUNCPROTO | SQOBJECT_REF_COUNTED), //internal usage only
// OT_CLASS = (_RT_CLASS | SQOBJECT_REF_COUNTED),
// OT_INSTANCE = (_RT_INSTANCE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
// OT_WEAKREF = (_RT_WEAKREF | SQOBJECT_REF_COUNTED)
//}SQObjectType;
//SQ_GetType
typedef int(Sq_GetType)(uint32_t v, int n);
static Sq_GetType* SQ_GetType = (Sq_GetType*)0x1358CD0;
@ -143,6 +143,11 @@ static SqPushFloatFunc* SQPushFloat = (SqPushFloatFunc*)0x1358B60;
typedef int(SqPushUserpointerFunc)(uint32_t v, void* sfloat);
static SqPushUserpointerFunc* SqPushUserpointer = (SqPushUserpointerFunc*)0x1358BA0;
////sq_newarray
//typedef int(_sq_newarray)(uint32_t v, int count);
//static _sq_newarray* sq_newarray = (_sq_newarray*)0x135A490;
//SQLOADFILE
typedef void* (SQLOADFILEFunc)(uint32_t v, const wchar_t* filename, BOOL printerror);
@ -218,9 +223,14 @@ public://
static int SQloadfileBuffer(uint32_t v, const wchar_t* filename, const wchar_t* str,BOOL printerror);
static int SQdofileBuffer(uint32_t v, const wchar_t* filename, const wchar_t* str);
static int LenheartGetIntData(uint32_t v);//获取静态数据
public://绘制类
static int sq_GetImg(uint32_t v);
static int sq_DrawItem(uint32_t v);
static int sq_DrawImg(uint32_t v);//绘制Img
static int sq_IntiNumberDraw(uint32_t v);//初始化数字绘制
static int sq_DrawNumber(uint32_t v);//数字绘制
public://对象类
static int GetObjectAddress(uint32_t v);//获取对象地址
@ -230,11 +240,16 @@ public://
static int SetObjectInfo(uint32_t v);//设置对象属性
static int SetObjectDeInfo(uint32_t v);//设置对象属性
static int GetObjectLevel(uint32_t v);//获取对象等级
static int sq_GetPlayerEachName(uint32_t v);//获取玩家交互对象名字
public://NUT API ½Ó¿Ú
public:
//NUT API 接口
static int sq_GetSkillAddress(uint32_t v);//获取技能地址
static int sq_Test(uint32_t v);//测试接口
static int sq_OpenConsole(uint32_t v);//´ò¿ª¿ØÖÆÌ¨
static int sq_OpenConsole(uint32_t v);
//打开控制台
static int sq_Switching(uint32_t v);//换装参数
static int sq_MoveMap(uint32_t v);//顺图
static int GetCharacterAttribute(uint32_t v);//读人物或装备属性
@ -259,6 +274,7 @@ public://NUT API
static int RegisterItemColor_STL(uint32_t v);//设置项目颜色
static int RegisterCodeDraw_STL(uint32_t v);//设置项目颜色
static int Sout(uint32_t v);//输出
static int Clock(uint32_t v);//获取程序运行时间
public://发包 API
static int SendPackType(uint32_t v);//发包类型

View File

@ -37,28 +37,30 @@
//#define RsHook "RsHook 开启"
//#define DOFILE_HOOK "群服dofile hook"
//#define COUTWINDOWS_SWITCH "输出窗口 开启"
#ifndef SELL
#define COUTWINDOWS_SWITCH "输出窗口 开启"
#define GOLD_LIGHT "曙光 开启"
#define ITEMRARITY "道具品级 开启"
#define MONSTER_BLOOD_UI "血槽修改 开启"
#define CREAT_CHR_UI "创建角色 开启"
#define GET_EXE_STR "获取EXE字符串索引 开启"
#define DRAWITEM "绘制ITEM 开启"
#define HOOKDRAWITEM "HOOK绘制ITEM 开启"
#define SETTINGWINDOWS "设置窗口HOOK 开启"
#define CODEDRAW "HOOK文字 开启"
#define HUDUI_100 "百级UI 开启"
//#define HUDUI_100 "百级UI 开启"
#define SENDPACKHOOK_EX "发包HookEX 开启"
#define RecoverySystem "回收系统 开启"
#define Inventory_M_Pos "背包鼠标位置HOOK 开启"//(开启回收系统需要鼠标位置支持)
#endif // !SELL
#define MOUSE_SWITCH "鼠标回调 开启"
#define SENDPACKHOOK "发包Hook 开启"
#define COPY_MESSAGE "消息框黏贴HOOK 开启"
#define SENDPACKHOOK_EX "发包HookEX 开启"
#define CHRATRBT_SWITCH "人物或装备属性 查看 修改 开启"
@ -73,6 +75,7 @@
#define DOFILE_API_SWITCH "L_Dofile调用 开启"
#define ADDRESS_API_SWITCH "内存操作 开启"
#define NEW_WINDOW_API_SWITCH "L新建窗口 开启"
#define YOSIN_BASE "娱心基础配置 开启"
#define DRAGONBOX_SWITCH "龙盒开启"
@ -87,7 +90,15 @@
#define HUSHI_SWITCH "护石开启"
#define BUFFSWITCHING_SWITCH "buff换装开启"
#define NEWUPGRADE_SWITCH "新版强化开启"
#define SIGN_IN_SWITCH "签到开启"
#define SERVER_AUCTION_SWITCH "全服竞拍开启"
#define RAID_AUCTION_SWITCH "团本竞拍开启"
#define ONLINEEVENT_SYSTEM "在线签到开启"
#define MARRY_SYSTEM "结婚系统开启"
#define FATE_SELECT_SYSTEM "命运的抉择开启"
#define FONT_BANK_SYSTEM "字体仓库开启"
#define RecoverySystem "回收系统 开启"
#define Inventory_M_Pos "背包鼠标位置HOOK 开启"//(开启回收系统需要鼠标位置支持)
#define NORMAL_STL "普通STL开启"
#define TIME_STL "时间STL开启"
@ -114,6 +125,9 @@
# define Skey {5,1,9,1,3}
#endif
# define DFCSkey {7,2,4,3,8}
# define Pri_key "-----BEGIN PRIVATE KEY-----\n"\
"MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDFRCM7WMVgU81p\n"\
"JXGmH7nxun7IaXiERWtegwJ7WsV6I4D+K4TMHkm5LVgnsQnFWluJhNkpO7iMR7mA\n"\
@ -153,3 +167,6 @@
#include "hook.h"
#include "lsquirrel.h"

View File

@ -25,7 +25,7 @@ void sock::Pack_Control(int idx, int code, void* p3, void* p4)
int Op = Dom["op"].GetInt();//ÅжÏÀàÐÍ
#if defined GOLD_LIGHT
#if !defined GOLD_LIGHTT
wchar_t* ss = DNFTOOL::charTowchar_t(Buffer);
uint32_t v = GetSqVm();
SQPushRootTable(v);
@ -216,6 +216,127 @@ void sock::Pack_Control(int idx, int code, void* p3, void* p4)
SQPop(v, 2);
}
#endif
//签到包
#ifdef SIGN_IN_SWITCH
if (Op >= 20051000 && Op <= 20051999)
{
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"Sq_Pack_Control", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
SQ_Call(v, 2, 0, 1);
SQPop(v, 2);
}
#endif
//全服竞拍
#ifdef SERVER_AUCTION_SWITCH
if (Op >= 25701000 && Op <= 25701999)
{
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"Sq_Pack_Control", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
SQ_Call(v, 2, 0, 1);
SQPop(v, 2);
}
#endif
//在线签到活动
#ifdef ONLINEEVENT_SYSTEM
if (Op >= 20052000 && Op <= 20052999)
{
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"Sq_Pack_Control", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
SQ_Call(v, 2, 0, 1);
SQPop(v, 2);
}
#endif
//结婚系统
#ifdef MARRY_SYSTEM
if (Op >= 20019000 && Op <= 20019999)
{
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"Sq_Pack_Control", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
SQ_Call(v, 2, 0, 1);
SQPop(v, 2);
}
#endif
//命运的抉择
#ifdef FATE_SELECT_SYSTEM
if (Op >= 20023000 && Op <= 20023999)
{
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"Sq_Pack_Control", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
SQ_Call(v, 2, 0, 1);
SQPop(v, 2);
}
#endif
//字体仓库
#ifdef FONT_BANK_SYSTEM
if (Op >= 20024000 && Op <= 20024999)
{
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"Sq_Pack_Control", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
SQ_Call(v, 2, 0, 1);
SQPop(v, 2);
}
#endif
//团本竞拍
#ifdef RAID_AUCTION_SWITCH
if (Op >= 25700000 && Op <= 25700999)
{
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"Sq_Pack_Control", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
SQ_Call(v, 2, 0, 1);
SQPop(v, 2);
}
#endif
//娱心基础配置
#ifdef YOSIN_BASE
if (Op >= 30000 && Op <= 40000)
{
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"Sq_Pack_Control", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
SQPushString(v, DNFTOOL::charTowchar_t(Buffer), -1);
SQ_Call(v, 2, 0, 1);
SQPop(v, 2);
}
#endif
#endif
}

File diff suppressed because it is too large Load Diff

316
test/squirrel.h Normal file
View File

@ -0,0 +1,316 @@
#pragma once
#include "DNFTOOL.h"
#include "RSAC.h"
//-------------------------------------------------------------------------------------------Squirrel
// printFunc 输出调用栈和栈内容
typedef int(SqPrintFunc)(uint32_t v);
static SqPrintFunc* SQPrintFunc = (SqPrintFunc*)0x1354060;
// PushRoot
typedef int(SqPushRootFunc)(uint32_t v);
static SqPushRootFunc* SQPushRootTable = (SqPushRootFunc*)0x1358C50;
// Push 函数绑定闭包
typedef int(realSqNewClosure)(uint32_t v, void* funcAddr, int a);
static realSqNewClosure* RealSqNewClosure = (realSqNewClosure*)0x135B850;
#define INIT_NUT_ADDRESS 0x135B850
static realSqNewClosure* MLnewclosure = nullptr;
// New槽
typedef int(SqNewSlot)(uint32_t v, int a, BOOL b);
static SqNewSlot* SQNewSlot = (SqNewSlot*)0x135AA80;
// 平栈
typedef int(SqPopTop)(uint32_t v);
static SqPopTop* SQPopTop = (SqPopTop*)0x1358FF0;
// 平栈
typedef int(SqPop)(uint32_t v, int n);
static SqPop* SQPop = (SqPop*)0x1358FD0;
//SQ_Get
typedef int(Sq_Get)(uint32_t v, int n);
static Sq_Get* SQ_Get = (Sq_Get*)0x135AE30;
#define _RT_NULL 0x00000001
#define _RT_INTEGER 0x00000002
#define _RT_FLOAT 0x00000004
#define _RT_BOOL 0x00000008
#define _RT_STRING 0x00000010
#define _RT_TABLE 0x00000020
#define _RT_ARRAY 0x00000040
#define _RT_USERDATA 0x00000080
#define _RT_CLOSURE 0x00000100
#define _RT_NATIVECLOSURE 0x00000200
#define _RT_GENERATOR 0x00000400
#define _RT_USERPOINTER 0x00000800
#define _RT_THREAD 0x00001000
#define _RT_FUNCPROTO 0x00002000
#define _RT_CLASS 0x00004000
#define _RT_INSTANCE 0x00008000
#define _RT_WEAKREF 0x00010000
#define SQOBJECT_REF_COUNTED 0x08000000
#define SQOBJECT_NUMERIC 0x04000000
#define SQOBJECT_DELEGABLE 0x02000000
#define SQOBJECT_CANBEFALSE 0x01000000
typedef enum tagSQObjectType {
OT_NULL = (_RT_NULL | SQOBJECT_CANBEFALSE),
OT_INTEGER = (_RT_INTEGER | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
OT_FLOAT = (_RT_FLOAT | SQOBJECT_NUMERIC | SQOBJECT_CANBEFALSE),
OT_BOOL = (_RT_BOOL | SQOBJECT_CANBEFALSE),
OT_STRING = (_RT_STRING | SQOBJECT_REF_COUNTED),
OT_TABLE = (_RT_TABLE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
OT_ARRAY = (_RT_ARRAY | SQOBJECT_REF_COUNTED),
OT_USERDATA = (_RT_USERDATA | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
OT_CLOSURE = (_RT_CLOSURE | SQOBJECT_REF_COUNTED),
OT_NATIVECLOSURE = (_RT_NATIVECLOSURE | SQOBJECT_REF_COUNTED),
OT_GENERATOR = (_RT_GENERATOR | SQOBJECT_REF_COUNTED),
OT_USERPOINTER = _RT_USERPOINTER,
OT_THREAD = (_RT_THREAD | SQOBJECT_REF_COUNTED),
OT_FUNCPROTO = (_RT_FUNCPROTO | SQOBJECT_REF_COUNTED), //internal usage only
OT_CLASS = (_RT_CLASS | SQOBJECT_REF_COUNTED),
OT_INSTANCE = (_RT_INSTANCE | SQOBJECT_REF_COUNTED | SQOBJECT_DELEGABLE),
OT_WEAKREF = (_RT_WEAKREF | SQOBJECT_REF_COUNTED)
}SQObjectType;
//SQ_GetType
typedef int(Sq_GetType)(uint32_t v, int n);
static Sq_GetType* SQ_GetType = (Sq_GetType*)0x1358CD0;
//SQ_Rawget
typedef int(Sq_Rawget)(uint32_t v, int n);
static Sq_Rawget* SQ_Rawget = (Sq_Rawget*)0x135AEA0;
//SQ*Getlocal
typedef wchar_t* (SqGetlocal)(uint32_t v, int n, int idx);
static SqGetlocal* SQGetlocal = (SqGetlocal*)0x135AFD0;
//SQ_Wakeupvm
typedef int (Sq_Wakeupvm)(uint32_t v, int n, int retval, int raiseerror);
static Sq_Wakeupvm* SQ_Wakeupvm = (Sq_Wakeupvm*)0x135B0D0;
//SQ_Call
typedef int (Sq_CallFunc)(uint32_t v, int params, int retval, int raiseerror);
static Sq_CallFunc* SQ_Call = (Sq_CallFunc*)0x1359280;
//SQ_Remove
typedef int (SQ_RemoveFunc)(uint32_t v, int idx);
static SQ_RemoveFunc* SQ_Remove = (SQ_RemoveFunc*)0x1359000;
//GetInt
typedef int(SqGetIntFunc)(uint32_t v, uint32_t stackIndex, int* sint);
static SqGetIntFunc* SQGetInt = (SqGetIntFunc*)0x1358D70;
//GetFloat
typedef int(SqGetFloatFunc)(uint32_t v, uint32_t stackIndex, FLOAT* sfloat);
static SqGetFloatFunc* SQGetFloat = (SqGetFloatFunc*)0x1358DD0;
//GetBool
typedef int(SqGetBoolFunc)(uint32_t v, uint32_t stackIndex, BOOL* sbool);
static SqGetBoolFunc* SQGetBool = (SqGetBoolFunc*)0x1358E30;
//GetString
typedef int(SqGetStringFunc)(uint32_t v, uint32_t stackIndex, wchar_t** sstring);
static SqGetStringFunc* SQGetString = (SqGetStringFunc*)0x1358E70;
typedef int(SqGetStringCFunc)(uint32_t v, uint32_t stackIndex, char** sstring);
static SqGetStringCFunc* SQGetStringc = (SqGetStringCFunc*)0x1358E70;
//GetUserdata
typedef int(SqGetUserdataFunc)(uint32_t v, uint32_t stackIndex, DWORD* up, DWORD* up1);
static SqGetUserdataFunc* SQGetUserdata = (SqGetUserdataFunc*)0x1358EC0;
//GetObjtypetag
typedef int(SqGetObjtypetagFunc)(uint32_t v, DWORD* up);
static SqGetObjtypetagFunc* SQGetObjtypetag = (SqGetObjtypetagFunc*)0x1358F20;
//GetUserpointer
typedef int(SqGetUserpointerFunc)(uint32_t v, uint32_t idx, DWORD* up);
static SqGetUserpointerFunc* SQGetUserpointer = (SqGetUserpointerFunc*)0x1358F80;
//GetTop
typedef int(SqGetTopFunc)(uint32_t v);
static SqGetTopFunc* SQGetTop = (SqGetTopFunc*)0x1358FC0;
//Push
typedef int(SqPushFunc)(uint32_t v, int idx);
static SqPushFunc* SQPush = (SqPushFunc*)0x1358C90;
//PushString
typedef int(SqPushStringFunc)(uint32_t v, const wchar_t* s, int len);
typedef int(SqPushStringFuncs)(uint32_t v, const char* s, int len);
static SqPushStringFunc* SQPushString = (SqPushStringFunc*)0x1358A60;
static SqPushStringFuncs* SQPushStringc = (SqPushStringFuncs*)0x1358A60;
//PushInt
typedef int(SqPushIntFunc)(uint32_t v, int sint);
static SqPushIntFunc* SQPushInt = (SqPushIntFunc*)0x1358AD0;
//PushBool
typedef int(SqPushBoolFunc)(uint32_t v, BOOL sbool);
static SqPushBoolFunc* SQPushBool = (SqPushBoolFunc*)0x1358B10;
//PushFloat
typedef int(SqPushFloatFunc)(uint32_t v, FLOAT sfloat);
static SqPushFloatFunc* SQPushFloat = (SqPushFloatFunc*)0x1358B60;
//SQLOADFILE
typedef void* (SQLOADFILEFunc)(uint32_t v, const wchar_t* filename, BOOL printerror);
static SQLOADFILEFunc* SQLOADFILEF = (SQLOADFILEFunc*)0x13560E0;
//SQDOFILE
typedef void* (SQDOFILEFunc)(uint32_t v, const wchar_t* filename, BOOL retval, BOOL printerror);
static SQDOFILEFunc* SQDOFILE = (SQDOFILEFunc*)0x1356240;
typedef void* (*SQFILE)();
#define SQ_SUCCEEDED(res) (res>=0)
//SQ_io_file_lexfeed_编码
//typedef int(LSQLEXREADFUNC)(int n);
typedef int(*LSQLEXREADFUNC)(int n);
static LSQLEXREADFUNC SQ_io_file_lexfeed_ASCII = (LSQLEXREADFUNC)0x1355F60;
static LSQLEXREADFUNC SQ_io_file_lexfeed_UCS2_BE = (LSQLEXREADFUNC)0x1356050;
static LSQLEXREADFUNC SQ_io_file_lexfeed_UCS2_LE = (LSQLEXREADFUNC)0x1356020;
static LSQLEXREADFUNC SQ_io_file_lexfeed_UTF8 = (LSQLEXREADFUNC)0x1355F90;
//SQfopen
typedef SQFILE* (SQfopenFunc)(const wchar_t* filename, const wchar_t* type);
static SQfopenFunc* SQfopen = (SQfopenFunc*)0x1355DC0;
//SQfread
typedef int(SQfreadFunc)(void* buffer, int a, int b, void* file);
static SQfreadFunc* SQfread = (SQfreadFunc*)0x1355DD0;
//SQwrite
typedef int(SQwriteFunc)(void* buffer, int a, int b, void* file);
static SQwriteFunc* SQwrite = (SQwriteFunc*)0x1355DE0;
//SQfseek
typedef int(SQfseekFunc)(void* buffer, int a, int b);
static SQfseekFunc* SQfseek = (SQfseekFunc*)0x1355DF0;
//SQftell
typedef int(SQftellFunc)(void* file);
static SQftellFunc* SQftell = (SQftellFunc*)0x1355E50;
//SQ_File_read
typedef int(SQ_File_readFunc)(void* file, void* afile, int a);
static SQ_File_readFunc* SQ_File_read = (SQ_File_readFunc*)0x1356090;
//SQ_Readclosure
typedef int(SQ_ReadclosureFunc)(uint32_t v, SQ_File_readFunc a, void* file);
static SQ_ReadclosureFunc* SQ_Readclosure = (SQ_ReadclosureFunc*)0x1359460;
//SQ_Fclose
typedef int(SQ__FcloseFunc)(void* file);
static SQ__FcloseFunc* SQ__Fclose = (SQ__FcloseFunc*)0x1355E70;
//SQ_Compile
typedef int(SQ_CompileFunc)(uint32_t v, LSQLEXREADFUNC FUNC, void* file, const wchar_t* filename, BOOL printerror);
static SQ_CompileFunc* SQ_Compile = (SQ_CompileFunc*)0x135A390;
//SQ_Throwerror
typedef int(SQ_ThrowerrorFunc)(uint32_t v, const wchar_t* error);
static SQ_ThrowerrorFunc* SQ_Throwerror = (SQ_ThrowerrorFunc*)0x13591A0;
//获取Squirrel v 基址
inline uint32_t GetSqVm();
class squirrel
{
private:
public://加载
static int SQloadfile(uint32_t v, const wchar_t* filename, BOOL printerror);
static int SQdofile(uint32_t v, const wchar_t* filename, BOOL retval, BOOL printerror);
public://NUT API 接口
static int sq_Test(uint32_t v);//测试接口
static int GetCharacterAttribute(uint32_t v);//读人物或装备属性
static int SetCharacterAttribute(uint32_t v);//写人物或装备属性
static int GetTownIndex(uint32_t v);//获取城镇编号
static int GetRegionIndex(uint32_t v);//获取城镇区域编号
static int GetTownXpos(uint32_t v);//获取城镇X坐标
static int GetTownYpos(uint32_t v);//获取城镇Y坐标
static int GetFatigue(uint32_t v);//获取疲劳值
static int GetExp(uint32_t v);//获取经验值
static int GoDungeon(uint32_t v);//去副本
static int GoTown(uint32_t v);//回城
static int MoveTown(uint32_t v);//回城
static int LDofile(uint32_t v);//Ldofile
static int Lcout(uint32_t v);//Lcout
static int NewWindows(uint32_t v);//新建窗口
static int SetSlot(uint32_t v);//设置UI槽坐标
public://发包 API
static int SendPackType(uint32_t v);//发包类型
static int SendPackByte(uint32_t v);//发包Byte
static int SendPackWord(uint32_t v);//发包Word
static int SendPackDWord(uint32_t v);//发包DWord
static int SendPackWChar(uint32_t v);//发包char*
static int SendPack(uint32_t v);//发包
static int GivePlayerItem(uint32_t v);//发物品给玩家
static int GivePlayerEqu(uint32_t v);//发装备给玩家
public://容器类接口
static int Get_STL(uint32_t v);//查询 类型容器
static int Set_STL(uint32_t v);//设置 类型容器
static int New_STL(uint32_t v);//new 类型容器
static int Timer_STL(uint32_t v);//时间容器
static int Jsoner_STL(uint32_t v);//时间容器
static int Coder_STL(uint32_t v);//时间容器
public://龙盒
static int Sync_Dragon_Pack(uint32_t v);//同步 龙盒数据包
static int Get_Dragon_Pack(uint32_t v);//获取 龙盒数据包
static int Redom_Dragon(uint32_t v);//发送 开龙盒
static int Get_DragonModel(uint32_t v);//获取 龙盒 模式
static int Set_DragonModel(uint32_t v);//设置 龙盒 模式
public:
//新增nut接口funcName绑定C语言函数funcAddr
static void RegisterNutApi(const wchar_t* funcName, void* funcAddr, uint32_t v);
//注册接口
static void R_Register_Nut();
};
//新增Nut接口绑定C函数
// 示例如下
/*
static int GoDungeon(uint32_t v)
{
int n1 = 0;
int n2 = 0;
int n3 = 0;
int n4 = 0;
int num;
num = SQGetTop(v);
if (num == 2)
{
SQGetInt(v, 2, &n1);
}
else if (num == 5)
{
SQGetInt(v, 2, &n1);
SQGetInt(v, 3, &n2);
SQGetInt(v, 4, &n3);
SQGetInt(v, 5, &n4);
}
else
{
SQPushBool(v, false);
return 1;
}
_SendpacksType(*_SendClass, 0, 15);
_SendPacks();
_SendpacksType(*_SendClass, 0, 16);
_SendPacksWord(*_SendClass, 0, n1);
_SendPacksByte(*_SendClass, 0, n2);
_SendPacksByte(*_SendClass, 0, n3);
_SendPacksByte(*_SendClass, 0, n4);
_SendPacks();
SQPushBool(v, true);
//return 1 表示该函数有返回值传给nut脚本 0则无
return 1;
}
*/
//新增C++调用 nut
// 示例如下
/*
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"dofile", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
SQPushString(v, L"1.cpp", -1);
SQ_Call(v, 2, 1, 0);
SQPop(v, 2);
*/

View File

@ -78,9 +78,10 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>F:\zhuomian\新客户端\Plugins\</OutDir>
<OutDir>I:\DOF\新客户端\Plugins\</OutDir>
<LibraryPath>G:\Qt\Tools\OpenSSL\Win_x86\lib;$(LibraryPath)</LibraryPath>
<IncludePath>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include;Z:\Visual Studio\VS_C_AND_C++_PROJECT\DOF_DllHook\test\Detours\include;Z:\Visual Studio\VS_C_AND_C++_PROJECT\DOF_DllHook\test\imgui;G:\Qt\Tools\OpenSSL\Win_x86\include;$(IncludePath)</IncludePath>
<TargetName>Lenheart</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
@ -123,7 +124,7 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Full</Optimization>
<DisableSpecificWarnings>4244;4018;</DisableSpecificWarnings>
<DisableSpecificWarnings>4244;4018;4996;</DisableSpecificWarnings>
<WholeProgramOptimization>true</WholeProgramOptimization>
</ClCompile>
<Link>
@ -132,8 +133,8 @@
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<AdditionalDependencies>libMinHook.x86.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Lib\x86;Z:\Visual Studio\VS_C_AND_C++_PROJECT\DOF_DllHook\test\Detours\lib.X86;D:\hookDNF\DOF_DllHook\test;E:\openssl\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>libMinHook.x86.lib;libcrypto.lib;libssl.lib;squirrel.lib;sqstdlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>H:\Visual Studio\VS_C_AND_C++_PROJECT\DOF_DllHook\test\lib;C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Lib\x86;Z:\Visual Studio\VS_C_AND_C++_PROJECT\DOF_DllHook\test\Detours\lib.X86;D:\hookDNF\DOF_DllHook\test;E:\openssl\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
@ -179,6 +180,7 @@
<ClInclude Include="DNFTOOL.h" />
<ClInclude Include="hook.h" />
<ClInclude Include="inlinehook.h" />
<ClInclude Include="json.hpp" />
<ClInclude Include="pch.h" />
<ClInclude Include="ReadNpk.hpp" />
<ClInclude Include="RSAC.h" />

View File

@ -45,6 +45,9 @@
<ClInclude Include="ReadNpk.hpp">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="json.hpp">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp">