|
You last visited: Today at 15:31
Advertisement
Rus. server
Discussion on Rus. server within the Perfect World forum part of the MMORPGs category.
09/27/2010, 21:01
|
#1771
|
elite*gold: 0
Join Date: Jul 2009
Posts: 11
Received Thanks: 10
|
ну я так и понял 
попробовал с хп и мп - таже тема - 0 пока в таргет на возмеш
спасибо откликнувшимся
обидно однако что так...
|
|
|
09/28/2010, 01:52
|
#1772
|
elite*gold: 0
Join Date: Dec 2009
Posts: 25
Received Thanks: 9
|
Quote:
Originally Posted by fenechka
ну я так и понял 
попробовал с хп и мп - таже тема - 0 пока в таргет на возмеш
спасибо откликнувшимся
обидно однако что так...
|
почему? я делаю так - вычитаю бафы, откидываю баф тигры на жс и потом сохраняю данные в базе с ключем id чара (левел и жс сохраняю).
Потом база обновляется когда человек снова попадает в таргет, а пока не попал данные берутся с базы, если же культивация выше чем сохраненный левел то удаляю запись с базы (устарела).
А еще, игроков вокруг перечислять можно из структуры игрока, тогда не надо бегать по старицам и считать до $300.
Mассив структур игроков:
BaseAddress+$1c+$20+$380+$088+i*4
i = 0..[BaseAddress+$1c+$20+$380+$014]
|
|
|
09/28/2010, 04:50
|
#1773
|
elite*gold: 0
Join Date: Jul 2009
Posts: 11
Received Thanks: 10
|
попробую ага
спасибо еще раз
|
|
|
09/29/2010, 00:46
|
#1774
|
elite*gold: 0
Join Date: Mar 2009
Posts: 25
Received Thanks: 6
|
В очередной раз попытался реализовать инжект в своей программке - клиент радостно вылетел. Тогда я, отчаявшись, создаю новое приложение с одной кнопкой "Таргет!". Работает! Копирую код обратно к себе - не работает.)) В итоге создал новый юнит, подключил его к проекту. Всё отлично. Парился неделю!
sioli, спасибо большое.=)
|
|
|
09/30/2010, 07:11
|
#1775
|
elite*gold: 0
Join Date: Dec 2009
Posts: 25
Received Thanks: 9
|
не за что.
Вообще надеялась что кто-то поможет покопать структуру
BaseAddress+$1c+$20+$380
Там думаю еще много чего интересного лежит, а время колупать ее у меня нету =\
|
|
|
10/04/2010, 01:52
|
#1776
|
elite*gold: 0
Join Date: Mar 2009
Posts: 25
Received Thanks: 6
|
Я бы помог, если б понял, как это делается.) В ближайшее время попытаюсь разобраться, а пока для меня загадкой является даже то, как можно не бегать по страницам и не считать до $300...
P.S.: в настоящее время пишу аналог pwassister`а, на основе которого в дальнейшем буду строить бота - мозг порядочно съедает.))
|
|
|
10/13/2010, 19:02
|
#1777
|
elite*gold: 0
Join Date: Sep 2010
Posts: 4
Received Thanks: 1
|
Code:
const
PW_BASE_ADDRESS = $009C0E6C;
var
BASE_ADDR:cardinal;
Pleer_Count:cardinal;
Players:cardinal;
ROLE_PLeer_ADDR:cardinal;
ProcessID,Ghwnd:Thandle;
ProcID:Thandle;
num:cardinal;
i: integer;
j: integer;
begin
Ghwnd := FindWindow(nil,pchar(edit1.text));
GetWindowThreadProcessId(Ghwnd, ProcID);
ProcessID := OpenProcess(PROCESS_ALL_ACCESS, False, ProcID);
if ProcessID <> 0 then begin
ReadProcessMemory(ProcessID, Pointer(PW_BASE_ADDRESS), @BASE_ADDR, 4, Num);
ReadProcessMemory(ProcessID, Pointer(BASE_ADDR + $1C), @BASE_ADDR, 4, Num);
ReadProcessMemory(ProcessID, Pointer(BASE_ADDR + $8), @BASE_ADDR, 4, Num);
ReadProcessMemory(ProcessID, Pointer(BASE_ADDR + $20), @BASE_ADDR , 4, Num);
ReadProcessMemory(ProcessID, Pointer(BASE_ADDR + $18), @Players , 4, Num);
ReadProcessMemory(ProcessID, Pointer(BASE_ADDR + $14), @Pleer_Count , 4, Num);
label1.Caption:= inttostr(Pleer_Count);
richedit1.Clear;
for i:=$0 to $300 {Pleer_Count} do
begin
ReadProcessMemory(ProcessID, Pointer(Players+Pleer_Count*4), @ROLE_PLeer_ADDR, 4, Num);
//ReadProcessMemory(ProcessID, Pointer(ROLE_PLeer_ADDR + $0), @ROLE_PLeer_ADDR, 4, Num);
//ReadProcessMemory(ProcessID, Pointer(ROLE_PLeer_ADDR + $4), @ROLE_PLeer_ADDR, 4, Num);
ReadProcessMemory(ProcessID, Pointer(Players + $458), @ROLE_PLeer_ADDR, 4, Num);
richedit1.Lines.Add(inttostr(ROLE_PLeer_ADDR));
end;
end;
Pleer_Count выдает действительный результат, ну количество вокруг.
А вот дальше проблема в цикле.
Также дописывал [I*4] + (+0)^J +4.
+458 PlayerId
+464 PlayerLvl
+46C PlayerHP
+470 PlayerMP
+4A4 PlayerMaxHP
+4A8 PlayerMaxMP
+5D4 PlayerClanID
По всем этим значением далее, выдает 0.
Если кто-то захочет помочь пишите сюда или в icq (488-811-Шесть Два Четыре)
|
|
|
10/16/2010, 21:23
|
#1778
|
elite*gold: 0
Join Date: Jul 2009
Posts: 11
Received Thanks: 10
|
Code:
ReadProcessMemory(ProcessID, Pointer(Players+Pleer_Count*4), @ROLE_PLeer_ADDR, 4, Num);
причем тут Pleer_Count ?
Code:
//ReadProcessMemory(ProcessID, Pointer(ROLE_PLeer_ADDR + $4), @ROLE_PLeer_ADDR, 4, Num);
почему закоментарено ?
Code:
ReadProcessMemory(ProcessID, Pointer(Players + $458), @ROLE_PLeer_ADDR, 4, Num);
почему смещение идэхи ($458) прибавляется не к ROLE_PLeer_ADDR а к Players ?
показанный выше код читает такое: BA + $1C + $8 + $20 + $18 + $вопще хрен пойми чего
естественно там хрен пойми чего...
вот тебе полностью рабочяя фенька на С#, для одной страницы.
на всякие там BitConvertr не смотри, издержки языка
Code:
private void getPlayerList()
{
int BytesRead = 0;
byte[] tBuff = new byte[4];
byte[] bplayer_name = new byte[32];
ReadProcessMemory(hProc, (IntPtr)BA, tBuff, 4, ref BytesRead);
ReadProcessMemory(hProc, (IntPtr)(BitConverter.ToUInt32(tBuff, 0) + 0x1C), tBuff, 4, ref BytesRead);
ReadProcessMemory(hProc, (IntPtr)(BitConverter.ToUInt32(tBuff, 0) + 0x8), tBuff, 4, ref BytesRead);
ReadProcessMemory(hProc, (IntPtr)(BitConverter.ToUInt32(tBuff, 0) + 0x20), tBuff, 4, ref BytesRead);
ReadProcessMemory(hProc, (IntPtr)(BitConverter.ToUInt32(tBuff, 0) + 0x18), tBuff, 4, ref BytesRead);
UInt32 pointer = BitConverter.ToUInt32(tBuff, 0);
listView1.Items.Clear();
for (int i = 0x0; i < 0x300; i++)
{
ReadProcessMemory(hProc, (IntPtr)(pointer + (i * 0x4)), tBuff, 4, ref BytesRead);
ReadProcessMemory(hProc, (IntPtr)(BitConverter.ToUInt32(tBuff, 0) + 0x4), tBuff, 4, ref BytesRead);
UInt32 player_base = BitConverter.ToUInt32(tBuff, 0);
if (player_base != 0)
{
//Player ID
ReadProcessMemory(hProc, (IntPtr)(player_base + 0x458), tBuff, 4, ref BytesRead);
string player_id = BitConverter.ToUInt32(tBuff, 0).ToString();
ListViewItem item1 = new ListViewItem(player_id);
//Player Name
ReadProcessMemory(hProc, (IntPtr)(player_base + 0x608), tBuff, 4, ref BytesRead);
ReadProcessMemory(hProc, (IntPtr)(BitConverter.ToUInt32(tBuff, 0) + 0x0), bplayer_name, 31, ref BytesRead);
string[] split = UTF8Encoding.Unicode.GetString(bplayer_name).Split(new string[] {"\0"}, StringSplitOptions.RemoveEmptyEntries);
string player_name = split[0];
item1.SubItems.Add(player_name);
//Player LVL
ReadProcessMemory(hProc, (IntPtr)(player_base + 0x464), tBuff, 4, ref BytesRead);
string player_lvl = BitConverter.ToUInt32(tBuff, 0).ToString();
item1.SubItems.Add(player_lvl);
//Player HP
ReadProcessMemory(hProc, (IntPtr)(player_base + 0x46C), tBuff, 4, ref BytesRead);
string player_hp = BitConverter.ToUInt32(tBuff, 0).ToString();
item1.SubItems.Add(player_hp);
listView1.Items.AddRange(new ListViewItem[] { item1 });
}
}
}
и не забудь чего написано в конце той, в начале этой страницы
пока плэера в таргет не возмеш, кроме идэхи и ника у него все по нулям будет
|
|
|
10/19/2010, 12:10
|
#1779
|
elite*gold: 0
Join Date: Dec 2009
Posts: 40
Received Thanks: 2
|
Здравствуйте. В очередной раз перечитываю кучу информации, которую тут выложили. Под действием даже начала изучать C#, но столкнулась с тем что самостоятельное обучение оставляет много вопросов.
Итак по поводу ботов. Постепенно начала вникать в коды которые тут выложены, но с самого начала ступор: понятия не имею как обратиться к клиенту и вообще как связать код и клиент.
У меня просьба выложить какой-нибудь самый простой код на C# или C++ полностью рабочий с обращением к клиенту. Постараюсь разобраться в структуре.
Конечно понимаю что я совсем чайник по сравнению с умами данного сайта, но так хочется своими ручками наваять, вроде бы и мозги присутствуют, но никак не могу собрать вкучку все.
Благодарю всех отписавшихся.
|
|
|
10/19/2010, 19:03
|
#1780
|
elite*gold: 0
Join Date: Jul 2009
Posts: 11
Received Thanks: 10
|
тут такого много уже было
ну вот например, читаем свое хп и мп
полностью весь прог
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace Test
{
public partial class Form1 : Form
{
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
[DllImport("kernel32.dll")]
static extern IntPtr OpenProcess(uint dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, uint dwProcessId);
[DllImport("kernel32.dll", SetLastError=true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool CloseHandle(IntPtr hObject);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
[Out] byte[] lpBuffer,
int dwSize,
out int lpNumberOfBytesRead
);
const int PROCESS_ALL_ACCESS = 0x1F0FFF;
const int BA = 0x9C0E6C;
IntPtr hProc;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
uint pID;
IntPtr hWnd = FindWindow(null, "Perfect World");
if (hWnd.ToInt32() != 0)
{
GetWindowThreadProcessId(hWnd, out pID);
hProc = OpenProcess(PROCESS_ALL_ACCESS, false, pID);
}
else
{
MessageBox.Show("Perfect World not running.");
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
CloseHandle(hProc);
}
private void button1_Click(object sender, EventArgs e)
{
//Read Player HP and MP
//HostPlayer struct: BA + 0x1C + 0x20
//HP: +0x46C
//MP: +0x470
byte[] hPlayer = new byte[4];
byte[] tBuff = new byte[4];
int BytesRead;
//Read HostPlayer
ReadProcessMemory(hProc, (IntPtr)BA, hPlayer, 4, out BytesRead);
ReadProcessMemory(hProc, (IntPtr)(BitConverter.ToInt32(hPlayer, 0) + 0x1C), hPlayer, 4, out BytesRead);
ReadProcessMemory(hProc, (IntPtr)(BitConverter.ToInt32(hPlayer, 0) + 0x20), hPlayer, 4, out BytesRead);
//Raed HP
ReadProcessMemory(hProc, (IntPtr)(BitConverter.ToInt32(hPlayer, 0) + 0x46C), tBuff, 4, out BytesRead);
string my_hp = BitConverter.ToInt32(tBuff, 0).ToString();
//Read MP
ReadProcessMemory(hProc, (IntPtr)(BitConverter.ToInt32(hPlayer, 0) + 0x470), tBuff, 4, out BytesRead);
string my_mp = BitConverter.ToInt32(tBuff, 0).ToString();
MessageBox.Show("HP: " + my_hp + " / MP: " + my_mp);
}
}
}
|
|
|
11/29/2010, 17:13
|
#1781
|
elite*gold: 0
Join Date: Apr 2010
Posts: 1
Received Thanks: 0
|
Ребят, а вы думали над таким моментом? Есть боты, которые работают при свернутом окне. По идее клиент может определить свернуто его окно или нет, и если свернуто, а персонаж вовсю себе переключает мобов, бегает в разных направлениях... Как можно предотвратить такое обнаружение?
|
|
|
01/24/2011, 21:27
|
#1782
|
elite*gold: 0
Join Date: Jan 2011
Posts: 2
Received Thanks: 1
|
Вот такая про&
Не так давно, я разбежалась со своим бывшим, и эта тварь, за всю мою доброту и ласку отомстила мне тем, что разместила мои не совсем "приличные" фотки и видео на  Подскажите ЧТО ДЕЛАТЬ??? Как удалить их от туда?? Пыталась писать администратору сайта. Безрезультатно(((( Может кто знает как мне помочь?
|
|
|
01/25/2011, 11:33
|
#1783
|
elite*gold: 0
Join Date: Nov 2007
Posts: 160
Received Thanks: 28
|
Quote:
Originally Posted by viktoriazzIT
Не так давно, я разбежалась со своим бывшим, и эта тварь, за всю мою доброту и ласку отомстила мне тем, что разместила мои не совсем "приличные" фотки и видео на  Подскажите ЧТО ДЕЛАТЬ??? Как удалить их от туда?? Пыталась писать администратору сайта. Безрезультатно(((( Может кто знает как мне помочь?
|
Попытайся выпить яду, ёбаный спамер.
|
|
|
01/26/2011, 14:43
|
#1784
|
elite*gold: 0
Join Date: Jun 2010
Posts: 5
Received Thanks: 1
|
lokky_06 вернулся на пару деньков перечитать события что собственно изменилось в перфекте глобального (ну окромя базового адреса и может быть таргета)
******************************
Ребят, а вы думали над таким моментом? Есть боты, которые работают при свернутом окне. По идее клиент может определить свернуто его окно или нет, и если свернуто, а персонаж вовсю себе переключает мобов, бегает в разных направлениях... Как можно предотвратить такое обнаружение?
1) НАЙТИ функцию которая занимается этим бредом и подменить конечное значение
2) илиб заморозить конечное значение..
3) либо пропадчить нахрен клиент чтоб даже вызова ее небыло а был переход на следуюшюю функцию
НО !!!
Ток до такого даунизма разрабы игр еше не опустились проверять свернут клиент нли нет
более того это неимеет никакого принципиального смычсла тк проше проверить обрашение к клиенту из вне.........
**************
**************
BuBucekTop
**************
Яд конешно вешь хорошая но от глупости и тупости не спасает...
*************************************************
viktoriazzIT он же Виктор он же Virktor фантазию надо развивать а то ведь так и до могилы не долго глядишь найдет злой и обиженный хомячек и отгрызет те руки по самые яйца за все прегрешения в онлайн играх (например за кражу аков )
*************************************************
Sumikot
Отдельный привет ес нужна помощь черкани в приват .............
|
|
|
01/31/2011, 12:05
|
#1785
|
elite*gold: 0
Join Date: Jan 2011
Posts: 1
Received Thanks: 0
|
Кто подскажет это достаточная  от различной там коррозии и как сейчас модно говорить агрессивных сред?
|
|
|
All times are GMT +1. The time now is 15:33.
|
|