Rus. server

12/26/2009 14:51 AlexGD#1141
Пока не известно о флайхаке. На серваках просто шок среди хаев. Теперь фарм 109 стал абсолютно невыгоден )

А геолетуна я как раз и пишу. Тока времени все нет доделать. И одной функции... Закрытия окна диалога с неписем :) Что делать? Все пропало...

;)
12/26/2009 15:13 origmas#1142
Quote:
Originally Posted by AlexGD View Post
Все пропало...
Клавишу Escape - пошли и все ..
12/26/2009 17:06 Novohyd#1143
origmas, огромная просьба, объясни плиз в 2 словах как пристыковать фуллтаргет отсюда
[Only registered and activated users can see links. Click Here To Register...]
к стартовому боту. Пытаюсь вставить это все в BotDlg.cpp Все остатки мозгов переломал - не получилось.
В боте более-менее разобрался. Основные принципы вроде как понял
12/26/2009 18:13 gen-ostr#1144
друзья! помогите разобраться с проблемой. никак не могу прочитать имя моба.
ВА+8+36+24+(i+4)+4+572+0-имя моба. как понимаю храниться в unicode.
длина-64 байта. начинаю считывать: первые два символа нормально, потом непонятная чушь.(набор символов).
пишу на VB6. для перевода в ANSI использую ChrW. считываю по 2 байта. (по одной букве так как юникод использует 2 байта на символ) в чем и где я ошибаюсь?
12/26/2009 18:33 silkytail#1145
Quote:
Originally Posted by muzhig View Post
Правда еще многому нужно научить его и самому научиться)) Но основа заложена уже оочень масштабная.
Любопытно было бы взглянуть на логику, если это как-либо обобщено, а не тупо захардкожена последовательность действий.
Я тут хочу замахнуться на что-то типа goal-oriented аи, но пока не очень ясно, как это можно сделать.
12/26/2009 18:48 origmas#1146
Quote:
Originally Posted by Novohyd View Post
...остатки мозгов...
Вставь в BotDlg.cpp где-нить внизу листинга 2 функции:

//---------------------------------------------------------------------------

static DWORD WINAPI SelectMonster(LPCVOID lpParam )
{
DWORD BaseAddress = 0x0098ADDC;
DWORD CallAddress = 0x005B7B70;
DWORD MonsterID = (DWORD)lpParam;
__asm
{
mov eax, BaseAddress;
mov eax, dword ptr[eax];
mov edi, MonsterID;
mov edi,[edi]
push edi;
mov ecx, dword ptr[eax+0x20];
add ecx, 0xEC;
mov edx, CallAddress;
call edx;
}
return 0;
}

//------------------------------------

bool CBotDlg::CallRemoteFunction(HANDLE hProcess, LPVOID lpParam)
{
HANDLE hThread = NULL;
LPVOID ThreadCodeAddr = NULL;
LPVOID Func = SelectMonster;
LPVOID ThreadDataAddr = NULL;

ThreadCodeAddr=VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory (hProcess, ThreadCodeAddr, Func, 4096, NULL);
ThreadDataAddr=VirtualAllocEx(hProcess, NULL, 256, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory (hProcess, ThreadDataAddr, lpParam, 256, NULL);
hThread = CreateRemoteThread(hProcess, NULL, NULL,(LPTHREAD_START_ROUTINE)ThreadCodeAddr, ThreadDataAddr, NULL, NULL);
if (!hThread)
{
//
}
else
WaitForSingleObject(hThread, INFINITE);

CloseHandle(hThread);
VirtualFreeEx(hProcess, ThreadCodeAddr, 4096, MEM_RELEASE);
VirtualFreeEx(hProcess, ThreadDataAddr, 256, MEM_RELEASE);
CloseHandle(hProcess);
return false;
}

//---------------------------------------------------------------------------

В том месте где определил PriorID, после while ...
закоментируй WriteProcessMemory.......
вставь вместо него -> CallRemoteFunction(Proc,(LPVOID)PriorID);


еще - в файле BotDlg.h - вставь после public -

// Construction
public:
CBotDlg(CWnd* pParent = NULL); // standard constructor
//**************************************

CBitmap m_bmOk;
bool Scaner();
bool Locator();
........


........

bool CallRemoteFunction(HANDLE hProcess, LPVOID lpParam);

//**************************************

Должно работать, я немного по др. делал, щас вообще еще .. по третьему варианту делаю .. - тоже от мозгов мало че осталось ..))
12/26/2009 19:03 origmas#1147
Quote:
Originally Posted by gen-ostr View Post
друзья! помогите разобраться с проблемой. никак не могу прочитать имя моба.
ВА+8+36+24+(i+4)+4+572+0-имя моба. как понимаю храниться в unicode.
длина-64 байта. начинаю считывать: первые два символа нормально, потом непонятная чушь.(набор символов).
пишу на VB6. для перевода в ANSI использую ChrW. считываю по 2 байта. (по одной букве так как юникод использует 2 байта на символ) в чем и где я ошибаюсь?
на Автоите я его из памяти как тип данных - wchar[32] читал потом выводил на экран и в списки как String($mNAME) - нормально на русском ..
найди эти соответствия на VB ..

еще .. +0 после 572 - это ведь тоже смещение его надо учитывать ..

попробуй по 1-му байту через байт читать ..
12/26/2009 19:16 Shamanpovt#1148
Ребят, подскажите: делаю таргет инекцией. код такой:
MOV_EAX(Dec("0098ADDC"))
MOV_EAX_DWORD_PTR_EAX()
MOV_EDI(Dec("801050D6"))
MOV_EDI_DWORD_PTR_EDI()
PUSH_EDI()
MOV_ECX_DWORD_PTR_EAX_ADD(Dec("20"))
ADD_ECX(Dec("EC"))
MOV_EDX(Dec("005B7B70"))
CALL_EDX()
Но клиент завершается аварийно. В чём ошибка?
12/26/2009 20:25 Novohyd#1149
Quote:
Originally Posted by origmas View Post
Вставь в BotDlg.cpp где-нить внизу листинга 2 функции:
.......
)
BotDlg.cpp(713) : error C2440: 'initializing' : cannot convert from 'unsigned long (__thiscall CBotDlg::*)(unsigned long)' to 'void *'
There is no context in which this conversion is possible
сама строка LPVOID Func = SelectMonster;
12/26/2009 20:50 Novohyd#1150
Quote:
Originally Posted by Shamanpovt View Post
Ребят, подскажите: делаю таргет инекцией. код такой:
Но клиент завершается аварийно. В чём ошибка?
А сама функция инжекта какая? И что в аргумент ставишь у нее?
12/26/2009 20:58 origmas#1151
Quote:
Originally Posted by Novohyd View Post
BotDlg.cpp(713) : error C2440: 'initializing' : cannot convert from 'unsigned long (__thiscall CBotDlg::*)(unsigned long)' to 'void *'
There is no context in which this conversion is possible
сама строка LPVOID Func = SelectMonster;
---- там в BotDlg.h - осталась старая запись функций - убери их.
красным цветом которые или закоментируй ..

// CBotDlg dialog

class CBotDlg : public CDialog
{
// Construction
public:
CBotDlg(CWnd* pParent = NULL); // standard constructor
//**************************************

CBitmap m_bmOk;
bool Scaner();
bool Locator();
void OnProperties();
void Init();
void LoadCfg();
bool OpenProc();
bool GetInfo();
bool GetCharInfo();
void CheckHeal();
void CheckPot();
bool PriorMob();

bool CallRemoteFunction(HANDLE hProcess, LPVOID lpParam);

//bool CallRemoteFunction();
//DWORD SelectMonster(DWORD lpParam);
//**************************************

// Dialog Data
//{{AFX_DATA(CBotDlg)
enum { IDD = IDD_BOT };
CButton m_cBtOpt;
CButton m_cBtMon;
CButton m_cOk;
CStatic m_cLabPrMp;
CStatic m_cLabPrHp;
CProgressCtrl m_cPrMp;
12/26/2009 21:26 Shamanpovt#1152
Это пока даже не функция, а так - наброски. По замыслу этот код при инекции должен выделить моба с ID=801050D6.
12/26/2009 21:40 Novohyd#1153
Quote:
Originally Posted by Shamanpovt View Post
Это пока даже не функция, а так - наброски. По замыслу этот код при инекции должен выделить моба с ID=801050D6.
это понятно. сама функция инжекта а не то что инжектируешь как выглядит
12/27/2009 07:58 AlexGD#1154
Quote:
Originally Posted by origmas View Post
Клавишу Escape - пошли и все ..
Не, ну так не интересно ) Если курсор в этот момент стоит в поле ввода чата, то там тупо все безвозвратно сотрется. Не комильфо!
12/27/2009 08:08 AlexGD#1155
Quote:
Originally Posted by gen-ostr View Post
друзья! помогите разобраться с проблемой. никак не могу прочитать имя моба.
ВА+8+36+24+(i+4)+4+572+0-имя моба. как понимаю храниться в unicode.
длина-64 байта. начинаю считывать: первые два символа нормально, потом непонятная чушь.(набор символов).
пишу на VB6. для перевода в ANSI использую ChrW. считываю по 2 байта. (по одной букве так как юникод использует 2 байта на символ) в чем и где я ошибаюсь?
Проблема с длиной. Я читаю 64 ДВорда, а потом вынимаю из них zero-terminated строку. И только потом можно его в анси.