⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hookinj.cpp

📁 JXOnline Auto Sell Program
💻 CPP
字号:
#include "stdafx.h"
#include "HookInj.h"

/*#define KPlayer_Base_Addr			0x0082AD34 // 0x0083440C
#define KPlayer_Size		        0x0000B304 // 0x0000B2FC

#define NPC_Base_Addr				0x00E172F0 // 0x00E209C8
#define NPC_Size					0x000082F8 // 0x000082F8
#define NPC_SitOffset				0x000000E4 // 0x000000E4
#define NPC_RideHorseOffset			0x00001760 // 0x00001760

#define KPlayer_Sell_Addr			0x11404	   // 113FC
#define Func_Spec_Addr				0x004B8B60 // 4B8E30
#define Sell_Func_Param				0x006247B8 // 0x0062DE20
#define DoScript_Addr				0x004A2F80 // 0x004A3350
#define KPlayer_Money1				0x00004D9C // 0x00004D9C
#define KPlayer_Money2				0x00004DB8 // 0x00004DB8

#define Item_Base_Addr				0x00EF3220 // 0x00EFC8F8
#define	Item_Size					0x00000538
#define Item_Index_Offset			0x0000B3F8

#define MapOffset					0x0085D1F4 // 0x008668CC-96D8
#define Char_X_Offset				0x0082AD60 // 0x00834438-96D8
#define Char_Y_Offset				0x0082AD64 // 0x0083443C-96D8*/
#define ServerNameOffset			0x00631304
#define PlayerNameAddr				0x00631388
#define MapOffset					0x00869204
#define Expire_Time_Addr			0x00630F80
#define Expire_Date_Addr			0x00630F7C
#define Game_Connection_State		0x00630C10
#define	CharList_Char1				0x00630C1C
#define	CharList_Char2				0x00630C1C
#define	CharList_Char3				0x00630C40
#define Game_Text_Offset			0x00630C64
#define Char_X_Offset				0x00836D70
#define Char_Y_Offset				0x00836D74

#define KPlayer_Base_Addr			0x00836D44
#define KPlayer_Size		        0x0000B304
#define KPlayer_Sit_Addr			0xB300
#define KPlayer_Money1				0x00004D9C
#define KPlayer_Money2				0x00004DB8
#define Player_Index_Offset			0x0000B3B4
#define KPlayer_Sell_Addr			0x11404

#define NPC_Base_Addr				0x00E23300
#define NPC_Size					0x000082F8
#define NPC_RideHorseOffset			0x00001760
#define NPC_Trade_State				0x000024C4
#define NPC_Name					0x000012C5

#define Item_Base_Addr				0x00EFF230
#define	Item_Size					0x00000538
#define Item_Index_Offset			0x0000B3F8

#define CommFuncOffset				0x004B8BE0
#define CommFuncParam				0x006307C8
#define DoScript_Addr				0x004A2990
#define Do_Use_Item_Offset			0x004EB4E0


const UINT WM_HOOK_WRITE = RegisterWindowMessage("WM_HOOK_WRITE");
const UINT WM_HOOKEX = RegisterWindowMessage("WM_HOOKEX_RK");
const UINT WM_ADVERSTING = RegisterWindowMessage("Adversting");
const UINT WM_ADVERST_TYPE = RegisterWindowMessage("AdverstingType");
const UINT WM_AUTOREPLY = RegisterWindowMessage("AutoReply");
const UINT WM_SELL = RegisterWindowMessage("Sell");
const UINT WM_WORLDTIME = RegisterWindowMessage("WorldTime");
const UINT WM_CITYTIME = RegisterWindowMessage("CityTime");
const UINT WM_GETCHAT = RegisterWindowMessage("GetChat");
const UINT WM_PARENT = RegisterWindowMessage("ParentHWND");
#define WM_GETCHAT1 (WM_USER + 2)

#define SYS_TIMER 1000
#define WM_FEEDBACK	WM_USER + 100
#define SHIFTED 0x8000

int  AdverstingType = 0;
char Adversting[201] = "";
char AutoReply[201] = "";
bool IsAutoReply = false;
int  IsSell = 0;
int  WorldTime;
int  CityTime;
int  CurrentWorldTime = 0;
int  CurrentCityTime = 0;
bool GetChat;
HWND ParentHWnd;
HWND vlhwnd;
DWORD OldDebugLogFunc;

HINSTANCE			hDll;
WNDPROC				OldWndProc = NULL;
LRESULT CALLBACK	NewWndProc(HWND,UINT,WPARAM,LPARAM);
VOID CALLBACK		TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);

UINT_PTR	nTimerID = 0;

BOOL bHooked = 0;

void Bin2Hex(unsigned char* source,unsigned char* dest, size_t length) {
static const char *hex = "0123456789ABCDEF";
unsigned char chHexA;
unsigned char chHexB;
size_t i;
	for (i=0;i<length;i++) {
		chHexA = hex[((unsigned char)(source[i]) >> 4) & 0x0f];
		chHexB = hex[(unsigned char)(source[i]) & 0x0f];
		dest[i*2] = chHexA;
		dest[i*2+1] = chHexB;
	}
	dest[i*2] = 0;
}
bool IsDebuging;

void DebugLog() {
	_asm {
		CALL OldDebugLogFunc
	}
	IsDebuging = true;
	DWORD DataSegment ;
	byte NetCode = 0;
	char adv[300];
	char adv1[300];
	_asm {
		PUSH ECX
		MOV DataSegment, ESI
		POP ECX
	}
	DWORD dwProcessID;
	HANDLE m_hProcess;
	unsigned char advlength;
	GetWindowThreadProcessId(vlhwnd, &dwProcessID);
	m_hProcess = OpenProcess(PROCESS_VM_READ, FALSE, dwProcessID);
	if (!m_hProcess)
		return;
	ReadProcessMemory(m_hProcess, (LPVOID)(DataSegment), &NetCode, 1, NULL);

	if ((NetCode == 0xFB) && GetChat) {
		sprintf_s(adv,10,"%d",dwProcessID);
		DataSegment = DataSegment+10;
		ReadProcessMemory(m_hProcess, (LPVOID)(DataSegment), &adv[6], 32, NULL);
		DataSegment = DataSegment+36;
		ReadProcessMemory(m_hProcess, (LPVOID)(DataSegment), &advlength, 1, NULL);
		DataSegment = DataSegment+1;
		size_t ulen = strlen(&adv[6]) + 6;
		adv[ulen] = ' ';
		adv[ulen+1] = ':';
		adv[ulen+2] = ' ';
		ReadProcessMemory(m_hProcess, (LPVOID)(DataSegment), &adv[ulen+3], advlength, NULL);
		adv[ulen+3+advlength] = 0;
		Bin2Hex((unsigned char*)adv,(unsigned char*)adv1,ulen+3+advlength);
		WPARAM wParam = GlobalAddAtom(adv1);
		SendMessage(ParentHWnd,WM_GETCHAT1, wParam, NULL);
	}
	IsDebuging = false;
	CloseHandle(m_hProcess);
}


void DoScript(char* s)
{  
    long addr = DoScript_Addr;

    __asm {
        push eax;
        mov eax, s;
        push eax;
        mov eax, addr;
        call eax;
        add esp, 4;
        pop eax;
        pop eax;
    }
}

byte IsHorse (){
	byte RideHorse;
	_asm {
		MOV ECX,DWORD PTR DS:[KPlayer_Base_Addr]
		MOV EAX,DWORD PTR DS:[NPC_Base_Addr]
		MOV EDX,DWORD PTR DS:[ECX+0x0000B3AC]
		IMUL EDX,EDX,NPC_Size
		MOV EAX,DWORD PTR DS:[EDX+EAX+NPC_RideHorseOffset]
		CMP EAX,0
		JE JumpOut;
		MOV RideHorse,1
		JumpOut:
	}
	return RideHorse;
}

int IsSelling() {
	int i;
	_asm {
		MOV EAX, DWORD PTR DS:[KPlayer_Base_Addr]
		MOV ECX, DWORD PTR DS:[EAX + KPlayer_Sell_Addr]
		MOV i, ECX
	}
	return i;
}

void Sell()
{
__asm
    {              
        push eax;        
        mov    ecx,[CommFuncParam];
        push 00000000h;
        push 00000000h;
        push 00000045h;        
        mov eax, CommFuncOffset;
        call eax;        
        pop eax;                
    }
}

void SwitchHorse()
{
__asm
    {              
        push eax;        
        mov    ecx,[CommFuncParam];
        push 00000000h;
        push 00000001h;
        push 00000035h;        
        mov eax, CommFuncOffset;
        call eax;        
        pop eax;
    }
}


BOOL APIENTRY DllMain(HANDLE hModule, DWORD uReason, LPVOID lpReserved)
{
	if(uReason == DLL_PROCESS_ATTACH)
	{
		hDll = (HINSTANCE) hModule;
		DisableThreadLibraryCalls(hDll);
    }
    return TRUE;
}

#define pCW ((CWPSTRUCT*)lParam)

/*bool IsBadWord(char * strData) {
	bool IsBad = false;
	int l = 0;
	char StrToCheck[201];
	char old = 32;
	if (strstr(strData,"c芻")) IsBad = true;
	if (strstr(strData,"k芻")) IsBad = true;
	if (strstr(strData,"l錸")) IsBad = true;
	if (strstr(strData,"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -