Jump to content

Welcome to [ iT ] Forums
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. If you already have an account, login here - otherwise create an account for free today!
Cộng đồng Âm nhạc Việt Nam

Hình ảnh

Support AUTO TGHM

- - - - -

  • Please log in to reply
332 replies to this topic

#281
autoeasy

autoeasy

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 285 Bài Viết:
hiện giờ anh chưa thấy được sự liên quan nào giữa skill và buff nên làm auto buff thì cho 2 combo : 1 cái chọn skill, 1 cái chọn buff của skill đó, để dễ kiểm tra thôi

còn buff có lợi , có hại thì chắc làm cái 2 cái data chứa 2 nhóm này, chứ làm test đủ kiểu mệt quá :d, nhưng anh kg có viết auto VL nên cũng chưa viết
my auto : autotghm

*^.^*

#282
bhduong

bhduong

    Right here waiting for you

  • Mod Giải Trí
  • PipPipPip
  • 432 Bài Viết:

tìm được mảng buff hiện tại của char khá dễ, bằng cách cho buff và search số buff = 1, 2, ... sẽ ra offset của mảng

OFFSET :
base + 1c + 20 + 360 : số buff hiện có
base + 1c + 20 + 35C : mảng begin

đây là 1 mảng liên tiếp nhau nhau, và là mảng kiểu short int, mỗi phẩn tử 2 byte, lưu số ID của buff
Đến đây mới khó :d, từ cái ID này làm sao biết được buff này của skill nào, sao mà phân biệt được buff này có lợi hay hại
Mời các bạn chém tiếp, dò từ addr code : 00503E12 :))

-----------------
Chán chết :oa: #-o , từ ID băm vào mảng lấy ra chẳng có offset nào sử dụng được ngoài cái offset tên, còn lại toàn 0 và 1


Có 1 cách để xem buff là lợi hay hại bằng cách so sánh chỉ số nhân vật trước khi được buff và sau khi dc buff anh ạ, em nhớ k nhầm thì các chỉ số này read được mà :dede

Các buff có lợi chủ yếu tăng chỉ số nhân vật

Các buff có hại chủ yếu do mob hoặc boss gây ra và phần lớn có liên quan đến HP, 1 vài cái hút mana thì có liên quan đến MP.Anh thử check số buff hiện có và thêm 1 biến thời gian, nếu sau xx giây mà HP hoặc MP tụt đều đều (VD tầm 200 HP hoặc MP mỗi lần tụt) và duy trì trong 5~6s thì là buff có hại ( với MOB thì thường gây sát thương kéo dài tàm 3~5s tùy loại) còn boss thì có thể lâu hơn, cách này tuy là thủ công nhưng mà cũng có ích khi chưa tìm ra địa chỉ lưu cái offset có lợi hoặc có hại :dede

À quên mất, còn 1 số buff có hại nữa là gây giảm tấn công, phòng thủ VL, kháng phép nữa (phải kiểm tra tất cả những gì có thể làm nhân vật giảm chỉ số)

Cần check buff có hại để giải độc kịp thời, mà phải mất đến 4-5s để biết là có bị độc hay hút mana không thì còn có tác dụng gì nữa :d

#283
heroceasar7384

heroceasar7384

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 359 Bài Viết:

Cần check buff có hại để giải độc kịp thời, mà phải mất đến 4-5s để biết là có bị độc hay hút mana không thì còn có tác dụng gì nữa 8->


hiện tại chưa tìm ra được cái nào là có lợi, cái nào là có hại,toàn 0 với 1 nên ko làm kiểu thủ công đó chắc cũng chả có cách nào khác :bong

#284
bhduong

bhduong

    Right here waiting for you

  • Mod Giải Trí
  • PipPipPip
  • 432 Bài Viết:
phù bây giờ mới rảnh, bắt tay vào nghiên cứu tiếp nào. Phen này phải chuyển sang C# hay C++ thôi. Ai có code C# hay C++ một số hàm cơ bản của auto send mình với. Nhất là mấy hàm memory và cách inject trong C nhé

#285
heroceasar7384

heroceasar7384

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 359 Bài Viết:

phù bây giờ mới rảnh, bắt tay vào nghiên cứu tiếp nào. Phen này phải chuyển sang C# hay C++ thôi. Ai có code C# hay C++ một số hàm cơ bản của auto send mình với. Nhất là mấy hàm memory và cách inject trong C nhé


Tham khảo ở đây nè Bhduong : http://forums.ifun.v...read.php?t=6168

Source code full ở đây có hết, auto viết = VB.Net2008, Hook.dll viết bằng VC++2008
tác giả Mèo Khùng

#286
autoeasy

autoeasy

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 285 Bài Viết:
Rảnh rảnh ngồi search túi đồ thấy cái này cũng khá phức tạp, hôm nay ngồi hệ thống lại share cho mọi người

Đầu tiên, mảng của túi đồ là 1 mảng liên tiếp nhau, lưu addr của item, ô nào trống thì = 0
+ begin : BASE + 1C + 20 + C3C + C
+ max : BASE + 1C + 20 + C3C + 10
==> item = BASE + 1C + 20 + C3C + C + index * 4 , với index từ 1 -> max

Do túi đồ chứa rất là nhiều chủng loại item nên cách xử lý của mỗi loại cũng sẽ khác nhau, tuy nhiên có 1 vài offset đầu tiên là lưu info như nhau
- item + 4 : type, chủng loại item. VD: 9 potion (HP,MP,..), F : vu khi, 24 : phù, 13 : item su dung co hieu qua khac (van may, di chuyen); 1B: thuoc Pet
- item + 8 : ID
- item + 10 : số lượng hiện tại của item
- item + 14 : số lượng tối đa mà item có thể xếp chồng lên nhau
- item + 18 : giá tiền

Quan trọng là ID và Type, vì từ đây mỗi loại sẽ xử lý khác nhau nên ta phải dựa vào 2 số này. Sau 1 thời gian debug code, và crash T_T cuối cùng cũng tìm được vài cái code asm
- item + 0 + 14 : addr code tại vị trí này sẽ tìm tên của item
- item + 0 + 24 : addr code tại vị trí này sẽ tính toán để game sẽ vẽ item có bị màu đỏ hay không, nghĩa là có đủ điều kiện để sử dụng hoặc không
Mỗi type khác nhau sẽ có addr code xử lý khác nhau, cùng chủng loại thì giống nhau, vì vậy phải xem code nó xử lý ra sao rùi mô phỏng lại trong auto, còn code asm của nó sẽ là : call dword ptr [edx + 14 hoặc 24] <-- không phải là giá trị cụ thể nữa
VD cụ thể dưới đây là hàm tìm tên item
CString CCharacter::GetInvName(int ind)
{
	int tmp, j, i_begin, type;
	CString s = _T("");

	MEM.ReadVal(AddBase20 + 0xC3C, tmp);
	MEM.ReadVal(tmp + 0xC, i_begin);
	MEM.ReadVal(i_begin + ind * 4, tmp);

	if (tmp != 0)
	{
		MEM.ReadVal(tmp + 0x4, type);
		switch (type)
		{
		case 0x9://potion
			MEM.ReadVal(tmp + 0x54, j);
			j += 0xC;
			break;
		case 0xF://vu khi
			MEM.ReadVal(tmp + 0xE4, j);
			j += 0xC;
			break;
		case 0x24://phu
			MEM.ReadVal(tmp + 0xB8, j);
			j += 0x4;
			break;
		case 0x1B://thuoc Pet
		case 0x13://the van may, item dac biet
			MEM.ReadVal(tmp + 0x4C, j);
			j += 0x4;
			break;
		default:
			return s;
		}
		MEM.ReadVal(j, s);		
	}
	
	return s;
}
Hoặc, còn 1 cách nữa là dùng inject code rồi sau đó nhận giá trị trả về đưa vào auto để read, vấn đề này hơi phức tạp nên nếu cần thiết sẽ tám chủ đề khác :((

Tiếp theo, do lúc ngâm cứu cái chức năng dùng thẻ vận may mới phát sinh tiếp cái vụ này : do thẻ vận may không tìm thấy offset level sử dụng (do trong túi đồ nó làm lúc nào cũng hợp lệ), chỉ khi nào sử dụng thì mới nhận phản hồi từ server về. Lục tới, lục lui -> pó tay :-s, nhưng tìm ra cái mảng lưu chức năng của item (những dòng màu xanh lá cây, màu vàng...)-> từ đây xây dựng nên info cố định trong auto
Mảng chức năng là 1 mảng băm từ số ID, sau khi băm là 1 mảng list (do có thể trùng khi băm ID) :(( : begin : BASE + D0, max : BASE + DC
index = ID mod max
addr = (begin + index * 4) + 4 + 0
xem mã băm cụ thể tại addr code : 00430C90
00430C90 - 56						 - push esi
00430C91 - 8b 74 24 08				- mov esi,[esp+08] <--số ID
00430C95 - 8b c6					  - mov eax,esi <--eax = ID
00430C97 - 33 d2					  - xor edx,edx <--edx = 0
00430C99 - f7 b1 dc 00 00 00		  - div [ecx+000000dc] <-- chia với max, băm đây :)), sau khi chia eax = phần nguyên, edx = số dư
00430C9F - 8b 81 d0 00 00 00		  - mov eax,[ecx+000000d0] <--eax = begin
00430CA5 - 8b 14 90				   - mov edx,[eax+edx*4]  <-- lấy về phần tử đầu trong mảng băm
00430CA8 - 85 d2					  - test edx,edx <-- có gia trị
00430CAA - 74 0b					  - je 00430cb7
00430CAC - 39 72 08				   - cmp [edx+08],esi <-- kiểm tra ID trùng với ID cần băm nếu không sẽ di chuyển tiếp qua object sau
00430CAF - 74 0c					  - je 00430cbd
00430CB1 - 8b 12					  - mov edx,[edx]
00430CB3 - 85 d2					  - test edx,edx
00430CB5 - 75 f5					  - jne 00430cac
00430CB7 - 33 c0					  - xor eax,eax
00430CB9 - 5e						 - pop esi
00430CBA - c2 04 00				   - ret 0004 <-- return không có giá trị
00430CBD - 8b 4a 04				   - mov ecx,[edx+04]
00430CC0 - 5e						 - pop esi
00430CC1 - 8b 01					  - mov eax,[ecx]
00430CC3 - c2 04 00				   - ret 0004 <--return giá trị addr của string chức năng
VD cụ thể cho hàm kiểm tra level của item vận may (thẻ vận may, thẻ may mắn, hộp vận may, sao vận may)
BOOL CCharacter::CheckLevelVanMay(int ID)
{
	switch (ID)
	{
	case 0x2B54:
	case 0x2B55:
		return TRUE;
	case 0x2B56:
	case 0x2B57:
		return CharLevel >= 20;
	case 0x2B58:
	case 0x2B59:
		return CharLevel >= 50;
	case 0x2B5A:
	case 0x2B5B:
	case 0x2B5C:
		return CharLevel >= 70;
	case 0x2B5D:
	case 0x2B5E:
	case 0x2B5F:
		return CharLevel >= 90;
	}
	return FALSE;
}

Bài viết này được chỉnh sửa bởi autoeasy: 02 July 2010 - 01:46 AM

my auto : autotghm

*^.^*

#287
heroceasar7384

heroceasar7384

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 359 Bài Viết:
Làm thế nào để kiểm tra được là đã full túi hay chưa nhỉ anh easy, em đếm được tổng số ô trong túi đồ rồi, nhưng chưa nghĩ ra cách để nhận biết lúc nào thì thùng đồ full (Có lẽ do chưa biết cách tìm vị trí item trong túi đồ, nếu tìm được cái này thì sẽ xác định được là vị trí đó đã tồn tại item hay chưa và suy ra là chỗ đó còn trống hay không)

Bài viết này được chỉnh sửa bởi heroceasar7384: 20 July 2010 - 10:35 AM


#288
bhduong

bhduong

    Right here waiting for you

  • Mod Giải Trí
  • PipPipPip
  • 432 Bài Viết:
:) Ngồi tìm mãi mà vẫn không tìm ra nổi cái hàm selectQuest. Không biết có ai tìm được không nhỉ?
Còn 1 vấn đề nữa là khi nhận Q di chuyển thì controlClick không có tác dụng, cứ phải active lên để sendmouseclick rất bất tiện. Trước thấy có người làm auto KBC mà di chuyển không cần active, không biết là làm thế nào nhỉ :|

#289
autoeasy

autoeasy

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 285 Bài Viết:
có 1 cách mò là dò từ số dòng hiện ra trong bảng quest, cứ next rùi back lại để tìm số dòng lựa chọn
sau khi có addr số dòng chọn rùi thì tìm code ghi của nó, cuối cùng debug ngay cái dòng quest cuối cùng là sẽ ra

có 2 hàm về quest : 1 hàm nhận quest và 1 hàm trả quest

Hồi xưa chỉ làm quest đổi HTT nên chỉ làm tới đây, vì code asm của mình không hoàn chỉnh, chỉ dùng được cho 1 Quest đã được mở trước đó rồi nên không post lên
my auto : autotghm

*^.^*

#290
kingdom11

kingdom11

    Thành viên mới

  • Newbies
  • 2 Bài Viết:
Bác nào có thể share giúp e offset chỉ số nguyên khí, tên guild của nhân vật, và các offset thông tin của người chơi xung quanh ko ạ, cám ơn các bác rất nhiều

#291
heroceasar7384

heroceasar7384

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 359 Bài Viết:
Mới học hỏi được cách inject ko cần tìm địa chỉ address assembly của tụi nước ngoài, hiện tại đang test bằng autoTGHM DEC thì thấy sau 24h auto liên tục, không bị crash game với 6 acc . Sắp tới autoTGHM của VN chúng ta sẽ có thể bước sang trang mới, auto inject không cần đến assembly mà chỉ cần offset và baseadd :)

À, ví dụ 1 hàm nho nhỏ về targetmob cho ai có hứng tham khảo :

Func selectTarget($targetId, $pid)
;Select the NPC/Mob/Player denoted by targetId
	local $packet, $packetSize
	
	$packet = '0200'
	$packet &= _hex($targetId)
	$packetSize = 6
	
	sendPacket($packet, $packetSize, $pid)
EndFunc

Chú ý đến từng câu lệnh trong hàm nhe =P~

#292
autoeasy

autoeasy

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 285 Bài Viết:
thật ra đây là hàm send packet của game, đã có nhiều pro biết rùi ^^
vẫn là inject thui, nhưng mà chỉ inject có 1 hàm để send dữ liệu lên server
chỉ có hàm run là chưa send bằng cách này được thui, khó nhất vẫn là cách tìm hàm này nếu tìm từ đầu chưa biết gì T_T

P/S : bởi vì dùng cách này có thể làm được rất nhiều chuyện, kể cả hack nếu tìm hiểu rõ nội dung packet (vì nó chẳng mã hóa gì hết) nên trước giờ chỉ pm với nhau :jeje:, hiện giờ cũng đã sưu tập đủ loại pack rùi nên hơi nản mới "gác chuột" đấy, vì không còn gì khó để làm nữa

Bài viết này được chỉnh sửa bởi autoeasy: 27 September 2010 - 07:47 PM

my auto : autotghm

*^.^*

#293
heroceasar7384

heroceasar7384

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 359 Bài Viết:
Đúng là vẫn inject nhưng mà các hàm này đã tính sẵn $packetsize rồi nên có thể nói là hạn chế gần như tối đa việc crash game do inject kiểu cũ gây ra. Đúng là có mỗi hàm Run chưa tìm ra được, hay anh thử nghiên cứu rồi tìm xem nào.

Mấy ngày hôm nay em test các hàm này thì thấy auto chạy 24/24 ko crash, 100% inject nhe :mad:

P/S : anh Easy rảnh thì online yahoo anh em mình trao đổi tí nhé :mad:

Bài viết này được chỉnh sửa bởi heroceasar7384: 28 September 2010 - 09:38 AM


#294
autoeasy

autoeasy

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 285 Bài Viết:
crash auto là do số lần gọi inject chứ kg phải do hàm inject nhiều hay ít, có thể giải thuật của em chưa hoàn chỉnh thui.
dạo này anh không online yahoo ban ngày được :d, do công việc
Em đã có addr của hàm sendpacket rùi thì em debug trong hàm này, search lệnh ret , ghi nhớ addr chổ này, sau đó tạo break point ngay đây, thì mỗi lần game xử lý gì cần sendpacket thì nó sẽ ngừng ở đây, em cho run tiếp thì sẽ trở về hàm gọi sendpacket, thường thì packet lưu trong esi (có lệnh push length (độ dài packet), push esi/edi/ebx..), xem giá trị esi rùi xem tại ô nhớ này dạng array byte thì sẽ biết được packet là gì, nhớ đổi byte thấp byte cao ngược lại.

Hiện tại anh vẫn giữ những hàm inject cũ vì nó có tính toán một vài điều kiện nữa mới gọi sendpacket, vậy giúp server game đỡ quá tải :jeje:, chỉ có hàm cho pet mới cần dùng sendpacket
my auto : autotghm

*^.^*

#295
heroceasar7384

heroceasar7384

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 359 Bài Viết:

crash auto là do số lần gọi inject chứ kg phải do hàm inject nhiều hay ít, có thể giải thuật của em chưa hoàn chỉnh thui.
dạo này anh không online yahoo ban ngày được :d, do công việc
Em đã có addr của hàm sendpacket rùi thì em debug trong hàm này, search lệnh ret , ghi nhớ addr chổ này, sau đó tạo break point ngay đây, thì mỗi lần game xử lý gì cần sendpacket thì nó sẽ ngừng ở đây, em cho run tiếp thì sẽ trở về hàm gọi sendpacket, thường thì packet lưu trong esi (có lệnh push length (độ dài packet), push esi/edi/ebx..), xem giá trị esi rùi xem tại ô nhớ này dạng array byte thì sẽ biết được packet là gì, nhớ đổi byte thấp byte cao ngược lại.

Hiện tại anh vẫn giữ những hàm inject cũ vì nó có tính toán một vài điều kiện nữa mới gọi sendpacket, vậy giúp server game đỡ quá tải :)), chỉ có hàm cho pet mới cần dùng sendpacket


Cái địa chỉ hàm Sendpacket này rất là củ chuối, lúc thì debug rất dễ lúc thì rất khó tìm, em post cái hàm asembly đấy lên đây cho các bác tham khảo :((

$OPcode &= '60'				;PUSHAD
$OPcode &= 'B8'&_hex($sendPacketFunction);MOV	 EAX, sendPacketAddress
$OPcode &= '8B0D'&_hex($BASEADD);MOV	 ECX, DWORD PTR [revBaseAddress]
$OPcode &= '8B4920'			;MOV	 ECX, DWORD PTR [ECX+20]
$OPcode &= 'BF'&_hex($packetAddress[0]);MOV	 EDI, packetAddress	//src pointer
$OPcode &= '6A'&_hex($packetSize,2);PUSH	packetSize		//size
$OPcode &= '57'				;PUSH	EDI
$OPcode &= 'FFD0'			;CALL	EAX
$OPcode &= '61'				;POPAD
$OPcode &= 'C3'				;RET

$SendpacketFunction = 0x005D7C30
$BaseAdd = 0x9C0E6C


Anh có biết cách Debug điạ chỉ SendPacketAddress không ?

Em dùng IDAPro Search :" Void *Src, size_t Size" mà lúc thì nó ra được ngay địa chỉ, lúc thì trắng bóc ko có gì :))

Còn dùng CE, tạo BreakPoint ngay tại Sendpacketadd thì F7 mãi mà chưa thấy nó nhảy về hàm gốc, nản quá :))


P/S sắp tới em sẽ post 1 tool tự động tìm BaseAdd và các địa chỉ cơ bản cho mọi người dễ tìm, đang nghiên cứu chuyển đổi code và offset của tụi nước ngoài :bong

Bài viết này được chỉnh sửa bởi heroceasar7384: 29 September 2010 - 10:37 AM


#296
autoeasy

autoeasy

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 285 Bài Viết:
tối về pm yahoo :gun:, hàm sendpack đã biết cấu trúc rùi thì rất là dễ tìm
my auto : autotghm

*^.^*

#297
heroceasar7384

heroceasar7384

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 359 Bài Viết:
Cuối cùng thì cũng tìm được cái hàm củ chuối này bằng CE :))

Show hàng đây :dede

Posted Image

Các bro cùng nhau nhảy vào chém gió đê :))

#298
bhduong

bhduong

    Right here waiting for you

  • Mod Giải Trí
  • PipPipPip
  • 432 Bài Viết:
Lâu không mày mò decode giờ thấy mình lạc hậu quá rồi. Giờ mới biết có vụ sendpacket này. Đã mày mò xong cái hàm selectTarget rồi. Pro nào chỉ cách làm sao decode lấy được packet của các hàm khác không nhỉ 8-> Sao mình chèn breakpoint vào cái add $SendpacketFunction mà chẳng lấy được giá trị của các thanh ghi nhỉ?
Hix sao nhiều hàm thế này, toàn là hàm mình chưa thấy bao giờ. Sao giờ mình mới biết trang này nhỉ :((
Có nhiều hàm nguy hiểm quá, nếu hacker lợi dụng thì nguy to

Bài viết này được chỉnh sửa bởi bhduong: 29 September 2010 - 10:42 PM


#299
heroceasar7384

heroceasar7384

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 359 Bài Viết:
Chính xác là nếu dùng sendpacket cho toàn bộ các hàm inject cũ thì có cái lợi là không cần tìm nhiều địa chỉ inject mỗi khi game update, hay vào đó chỉ cần tìm duy nhất 1 địa chỉ hàm Sendpacket.
Các hàm sử dụng sendpacket chỉ yêu cầu ID của đối tượng cần xử lý (ví dụ hàm PickItem chỉ cần biết ItemID,itemSN là nhặt đồ được và ko cần tìm địa chỉ inject Pickitem)

Nhưng cũng có cái hại (đối với NPH thôi chứ còn có lợi với người sử dụng :jeje: ) là do các gói tin không được mã hóa gì cả nên nếu bị hacker lợi dụng thì..... khó đỡ lắm :bash

@bhduong : buổi tối phải chơi với con không online yahoo được, nếu cần gì thì pm ban ngày nhé (giờ hành chính :bye:)

#300
heroceasar7384

heroceasar7384

    Trung cấp CSTH

  • Advance Member
  • PipPipPip
  • 359 Bài Viết:
Có bro nào giúp mình cái hàm tự động select Quest của NPC cái :dede, cụ thể là hàm tự động chọn dòng :"thương phẩm" ở các NPC ấy mà. Mình ko biết cách debug cái này, không biết có pro nào debug được rồi thì giúp mình với , cảm ơn nhiều nhe. Có cái này thì hàm sửa đồ có lẽ sẽ thành công 100% mà không cần phải dùng ControlClick để select quest từ NPC :-&






Perfumista - Thong tin nuoc hoa

Stars Counter Game

Balloon vs. Thorns

MU Phuc Hung

Làm Việc Tài Nhà

Mu Da Nang

Tuyển Nhân Viên Bán Hàng

Tư vấn sức khỏe trực tuyến

Close [X]