Merchant hack/bug.. fixed! %100

dasdsdfgfd61

Banlanmış
Kalemi Kırıldı!
Katılım
30 May 2008
Mesajlar
760
Reaction score
22
Puanları
0
Yaş
32
Orjinal Kod Makale
Quite proud of this one, though it's spread out all over the place (used small but safe code-caves, Kekers says I should have used a DLL and BlaDe says I should have used a larger [more likely that it is used and my code will be written over] code-cave.. but I like it!).

Below is the actual workings of it, but I'll throw it into the Ebenezer/Client Editor once I'm finished fixing the select character DC hack (might as well throw them in together!).

Kod:
< CUser::ItemTrade >
004A5E93     E9 7AA00500    JMP Ebenezer.004FFF12        // jump to our first code cave

< start of first code-cave >
004FFF12     80BF 90000000 >CMP BYTE PTR DS:[EDI+90],0        // check if pTable->m_Countable == 0
004FFF19    ^E9 B61CFDFF    JMP Ebenezer.004D1BD4        // (jump to our next code-cave as we ran out of space)

< next code-cave >
004D1BD4    ^0F85 C342FDFF  JNZ Ebenezer.004D1731        // if pTable->m_Countable != 0 (meaning, it's stackable), jump to our patched over code - we don't need to continue checking, the Merchant hack doesn't deal with stackable items!
004D1BDA     EB 2A          JMP SHORT Ebenezer.004D1C06        // (jump to our next code-cave as we ran out of space)

< next code-cave >
004D1C06     837D E8 01     CMP DWORD PTR SS:[EBP-18],1        // check if the stack size is 1
004D1C0A    ^E9 46FBFFFF    JMP Ebenezer.004D1755        // (jump to our next code-cave as we ran out of space)

< next code-cave >
004D1755    ^0F85 9858FDFF  JNZ Ebenezer.004A6FF3        // if the stack size != 1, jump to fail_return - this prevents anything from happening with the item!
004D175B    ^EB D4          JMP SHORT Ebenezer.004D1731        // otherwise, continue onto our patched over code

< last code-cave >                        // continue on with our patched over code [which is below]
004D1731     807F 38 14     CMP BYTE PTR DS:[EDI+38],14        // check if pTable->m_Race == 20
004D1735    ^0F84 B858FDFF  JE Ebenezer.004A6FF3        // if it is, it means the item is untradeable so jump to fail_return
004D173B    ^E9 5D47FDFF    JMP Ebenezer.004A5E9D        // otherwise... jump back to CUser::ItemTrade

< back to CUser::ItemTrade >
004A5E9D  |. 807D 0B 01     CMP BYTE PTR SS:[EBP+B],1

Did this yesterday, but it took me a bit to get it tested - was 'playing' a bit of WoW with Kekers while Visual Studio 2021 (and SP1) & SQL Server 2021 were installing, then I had to set all that up.. then ODBC (...why Vista, why...), and finally multi-client it. But yeah, it works (after all of that), and on the first go i r proud to say!

If you're going to use this to patch it, you'd be best using OllyDBG to jump to each address, hit "assemble" on each line and copy the instruction (though you'll need to remove "Ebenezer." from them all, for the record - Olly puts that in). Don't use a hex editor, unless you work out the file offsets.

Edit:
My tabs are all over the place.. oh well

Az Buçuk Çevirilmişi

Ancak bunun yerine her yaymak's Quite biri, gurur (küçük ama güvenli kod mağaralar kullanılan Kekers bir DLL ve Blade kullandığınız gerektiğini söylüyor ben daha büyük bir [daha çok bu ve kod kullanılır olasılıkla kullandığınız gerektiğini söylüyor üzerinde yazılı olacak] kod mağara .. ama I like it!).

Aşağıda bu gerçek çalışma, ama bir kere ben DC kesmek seçin karakter belirleme bitti Ben Ebenezer / Müşteri Editör içine atmak olacak (aynı zamanda birlikte atıyorlar olabilir.)

Kod:
<CUser:: ItemTrade> 
004A5E93 E9 7AA00500 JMP Ebenezer.004FFF12 / / atlama ilk kodu mağara için 

<Ilk kod başlangıç mağara> 
004FFF12 80BF 90000000> CMP BYTE PTR DS: [EDI 90], pTable-> m_Countable == 0 eğer 0 / / kontrol 
004FFF19 ^ E9 B61CFDFF JMP Ebenezer.004D1BD4 / / (atlamak sonraki kodunuza-mağara gibi boşluk bitti) 

<Sonraki kod mağara> 
004D1BD4 ^ 0F85 C342FDFF JNZ Ebenezer.004D1731 / / eğer pTable-> m_Countable bizim kod üzerinde yamalı - biz kontrol devam etmek için, Tüccar kesmek gerekmez için! = 0 bu stackable's (anlam), atla başa gelmez stackable öğeleri! 
004D1BDA EB 2A JMP KISA Ebenezer.004D1C06 / / (atlamak sonraki kodunuza-mağara gibi boşluk bitti) 

<Sonraki kod mağara> 
004D1C06 837D E8 01 CMP DWORD PTR SS: [ebp push-18], 1 / / kontrol edin boyutunu yığıt 1 
004D1C0A ^ E9 46FBFFFF JMP Ebenezer.004D1755 / / (atlamak sonraki kodunuza-mağara gibi boşluk bitti) 

<Sonraki kod mağara> 
004D1755 ^ 0F85 9858FDFF JNZ Ebenezer.004A6FF3 / / eğer! = 1, atlamak fail_return - bu öğe ile olmasını engelleyen şey yığın boyutu! 
004D175B ^ EB D4 JMP KISA Ebenezer.004D1731 / / aksi halde, üzerine kod bizim yamalı üzerinden devam 

<Son kod mağara> / / bizim kod üzerinde yamalı [hangi altında devam] 
004D1731 807F 38 14 CMP BYTE PTR DS: [EDI 38], pTable-> m_Race == 20 eğer 14 / / kontrol 
004D1735 ^ 0F84 B858FDFF JE Ebenezer.004A6FF3 eğer o / / bu öğeyi anlamı çok fail_return atlamak untradeable olduğunu 
004D173B ^ E9 5D47FDFF JMP Ebenezer.004A5E9D / / başka ... geri CUser atlamak:: ItemTrade 

<Geri CUser için:: ItemTrade> 
004A5E9D |. 807D 0b 01 CMP BYTE PTR SS: [ebp push + B], 1

Bu dün mi, ama bana test için biraz aldı - 'Kekers süre Visual Studio 2021 (ve SP1 ile WoW biraz oynamaya) ve SQL Server 2021 oldu, sonra bu kadar .. ayarlamak zorunda yükleme edildi sonra ODBC (... neden Vista, neden ve sonuç çok istemci ...),. Ama evet, çalıştığı tüm bu (sonra), ve ilk IR söylemek gurur git!

Eğer yama bu kullanacağız, en iyi her adres atlamak için, isabet "monte" her satırında OllyDBG kullanarak duyarım ve talimat kopyası (ancak "Ebenezer kaldırmak gerekir." Onlardan tüm kayıt için - Olly koyar olarak) bu. Eğer dosya uzaklıklar çalışmak, bir onaltılık düzenleyici kullanmayın.

İngilizcesi İyi Olan Biri Çevirirse Hepimize Yararlı Olur...

Alıntıdır...
 
Cevap: Merchant hack/bug.. fixed! %100

oha :a:
teşekkurler
 
Cevap: Merchant hack/bug.. fixed! %100

Bu kadar debelenmeseydin :D Ebenezer ve exe'den merchant hack yapılan offsetleri değişirsen problem kalmaz.


Örneğin SOACS
 
Cevap: Merchant hack/bug.. fixed! %100

bence bu yontemle trade ve bircok dupede fixlenir...
 
Cevap: Merchant hack/bug.. fixed! %100

bunu bende okudum. Sanırım ASM Bilmek gerekli :/
 
Cevap: Merchant hack/bug.. fixed! %100

++++++++++++

--------------------------------
 
Son düzenleme:
Cevap: Merchant hack/bug.. fixed! %100

saollllllllllll
 
Cevap: Merchant hack/bug.. fixed! %100

Teşekkürler :)
 
Cevap: Merchant hack/bug.. fixed! %100

teşekkürler...
 
Cevap: Merchant hack/bug.. fixed! %100

saolasın pek iyi oldu hele zor serverler için
 
Cevap: Merchant hack/bug.. fixed! %100

eline sağlık
 
Cevap: Merchant hack/bug.. fixed! %100

Teşekkürler
 
Geri
Üst Alt