E os créditos???
Código:// Memory Address #if (GS_CASTLE == 0) // -- GS Customs Config #define OS_CHECKSUMAPASS 0x4347C8 #define OS_LOGPAINT 0x543A5F+1 // -- Require ID System #define OS_LEAVEWITHOUTID_P01 0x449ACD #define OS_LEAVEWITHOUTID_P02 0x449ACD+3 #define OS_DELETEWITHOUTID_P01 0x4371B2 #define OS_DELETEWITHOUTID_P02 0x4371B2+1 #define OS_DELETEWITHOUTID_P03 0x4371B4 // -- Jewels Price Address #define OS_BLESS_PRICE 0x523FE3+3 #define OS_SOUL_PRICE 0x524004+3 #define OS_CHAOS_PRICE 0x524026+3 #define OS_LIFE_PRICE 0x524048+3 #define OS_CREATION_PRICE 0x524069+3 #define OS_GUARDIAN_PRICE 0x524147+3 // -- Trainer NPC Mixes #define OS_DARKSPIRIT_MIX_RATE 0x5B289D+6 // Default: 60% #define OS_DARKHORSE_MIX_RATE 0x5B219C+6 // Default: 60% // -- Chaos Manchine Mixes #define OS_ITEM_PLUS10_MIX 0x5AFC98+6 // Default: 50% #define OS_ITEM_PLUS11_MIX 0x5AFCC3+6 // Default: 45% #define OS_ITEM_PLUS12_MIX 0x5AFCEE+6 // Default: 45% #define OS_ITEM_PLUS13_MIX 0x5AFD19+6 // Default: 45% #define OS_DINORANT_MIX_RATE 0x5B08F5+6 // Default: 70% #define OS_WING2MIX_RATE_P01 0x5B16CA+6 // Default: 90% #define OS_WING2MIX_RATE_P02 0x5B16D6+6 // Default: 90% #define OS_WING3MIX1_RATE_P01 0x5B6AB0+6 // Default: 35% Condor #define OS_WING3MIX1_RATE_P02 0x5B6ABC+6 // Default: 35% Condor #define OS_WING3MIX2_RATE_P01 0x5B71B2+6 // Default: 40% Wings3 Final #define OS_WING3MIX2_RATE_P02 0x5B71BE+6 // Default: 40% Wings3 Final // -- Chaos Castle #define OS_CC_STARTMINUSER 0x55C6E0+3 // Default: 2 // -- Illusion Temple #define OS_IT_STARTMINUSER 0x5A3C16+6 // Default: 4 // -- Skill Level #define OS_TWISTINGSLASH_USELV 0x48C7FB+7 // Default: 80 #define OS_RAGEFULBLOW_USELV 0x48C814+7 // Default: 170 #define OS_DEATHSTAB_USELV 0x48C82D+7 // Default: 160 #define OS_IMPALE_USELV 0x48C846+7 // Default: 28 #define OS_INNERSTRENGTH_USELV 0x48C85F+7 // Default: 120 #define OS_PENETRATION_USELV 0x48C878+7 // Default: 130 // -- Pot BYPASS #define OS_POTLIMIT_P01 0x42B917 #define OS_POTLIMIT_P02 0x4DEFA6 #define OS_POTLIMIT_P03 0x4DF09C #define OS_POTLIMIT_P04 0x4DF13E #define OS_INNERSTRENGTH_TIME_DIV01 0x4BDA00+2 // Default: 60 [Time Divisor] #define OS_INNERSTRENGTH_TIME_DIV02 0x4BD9F9+1 // Default: 10 [Time Divisor] Rings of Transformation #define GS_RING1 (0x004BE80F+3) #define GS_RING2 (0x004BE818+3) #define GS_RING3 (0x004BE821+3) #define GS_RING4 (0x004BE82A+3) #define GS_RING5 (0x004BE833+3) #define GS_RING6 (0x004BE83C+3) Orbs of Summon: #define GS_ORB0 (0x004BCF7B+1) #define GS_ORB1 (0x004BCFAC+1) #define GS_ORB2 (0x004BCFDD+1) #define GS_ORB3 (0x004BD00E+1) #define GS_ORB4 (0x004BD03F+1) #define GS_ORB5 (0x004BD070+1) #define GS_ORB6 (0x004BD0A4+1) jewel Prices: #define GS_BLESS_PRICE (0x00523FE3+3) #define GS_SOUL_PRICE (0x00524004+3) #define GS_CHAOS_PRICE (0x00524026+3) #define GS_LIFE_PRICE (0x00524048+3) #define GS_CREATION_PRICE (0x00524069+3) #define GS_GUARDIAN_PRICE (0x00524147+3) Offsets of Manashield. #define GS_MANA_SHIELD_1 (0x004BDC79+1) //Agility #define GS_MANA_SHIELD_2 (0x004BDC99+1) //Energy #define GS_MANA_SHIELD_3 (0x004BDCBE+1) //Divider //GameServer UDP Port #define GS_UDP_PORT (0x005356F8+1) //Jewel Rates #define GS_SOUL_RATE (0x0050FA38+3) #define GS_SOUL_RATE_L (0x0050F959+3) #define GS_LIFE_RATE (0x00510237+3) //MaxLevel No Exp #define GS_MAX_LVL_NOEXP (0x00535828+3) //Level Up Points #define GS_LVLUP_DL (0x004E95E1+2) #define GS_LVLUP_MG (0x004E9609+2) #define GS_LVLUP_NM (0x004E9620+2) #else // -- GS Customs Config #define OS_CHECKSUMAPASS 0x4377C8 #define OS_LEAVEWITHOUTID_P01 0x44CAFA #define OS_LEAVEWITHOUTID_P02 0x44CAFA+3 #define OS_LOGPAINT 0x56610F+1 // -- Jewels Price Address #define OS_BLESS_PRICE 0x536643+3 #define OS_SOUL_PRICE 0x536664+3 #define OS_CHAOS_PRICE 0x536686+3 #define OS_LIFE_PRICE 0x5366A8+3 #define OS_CREATION_PRICE 0x5366C9+3 #define OS_GUARDIAN_PRICE 0x5367A7+3 // -- Trainer NPC Mixes #define OS_DARKSPIRIT_MIX_RATE 0x5E579D+6 // Default: 60% #define OS_DARKHORSE_MIX_RATE 0x5E509C+6 // Default: 60% // -- Chaos Manchine Mixes #define OS_ITEM_PLUS10_MIX 0x5E2B98+6 // Default: 50% #define OS_ITEM_PLUS11_MIX 0x5E2BC3+6 // Default: 45% #define OS_ITEM_PLUS12_MIX 0x5E2BEE+6 // Default: 45% #define OS_ITEM_PLUS13_MIX 0x5E2C19+6 // Default: 45% #define OS_DINORANT_MIX_RATE 0x5E37F5+6 // Default: 70% #define OS_WING2MIX_RATE_P01 0x5E45CA+6 // Default: 90% #define OS_WING2MIX_RATE_P02 0x5E45D6+6 // Default: 90% #define OS_WING3MIX1_RATE_P01 0x5EA280+6 // Default: 35% Condor #define OS_WING3MIX1_RATE_P02 0x5EA28C+6 // Default: 35% Condor #define OS_WING3MIX2_RATE_P01 0x5EA982+6 // Default: 40% Wings3 Final #define OS_WING3MIX2_RATE_P02 0x5EA98E+6 // Default: 40% Wings3 Final // -- Chaos Castle #define OS_CC_STARTMINUSER 0x56F010+3 // Default: 2 // -- Illusion Temple #define OS_IT_STARTMINUSER 0x5D6B26+6 // Default: 4 // -- Skill Level #define OS_TWISTINGSLASH_USELV 0x49D32B+7 // Default: 80 #define OS_RAGEFULBLOW_USELV 0x49D344+7 // Default: 170 #define OS_DEATHSTAB_USELV 0x49D35D+7 // Default: 160 #define OS_IMPALE_USELV 0x49D376+7 // Default: 28 #define OS_INNERSTRENGTH_USELV 0x49D38F+7 // Default: 120 #define OS_PENETRATION_USELV 0x49D3A8+7 // Default: 130 // -- Pot BYPASS #define OS_POTLIMIT_P01 0x42D2C7 #define OS_POTLIMIT_P02 0x4EFED6 #define OS_POTLIMIT_P03 0x4EFFCC #define OS_POTLIMIT_P04 0x4F006E #define OS_INNERSTRENGTH_TIME_DIV01 0x4CE8A0+2 // Default: 60 [Time Divisor] #define OS_INNERSTRENGTH_TIME_DIV02 0x4CE899+1 // Default: 10 [Time Divisor] #endif #if (GS_CASTLE == 0) #define OBJECT_BASE 0x79E4EC8 #define OBJECT_SIZE 0x2048 #define OBJECT_MIN 8000 #define OBJECT_MAX 9000 #define OBJECT_MAXUSER 1000 #define gObjZen 0xD8 #define gObjLupp 0xA8 #define gObjStr 0xDC #define gObjDex 0xDE #define gObjVit 0xE0 #define gObjEne 0xE2 #define gObjLogin 0x6C #define gObjLvl 0xA6 #define gObjNick 0x77 #define gObjClass 0xA0 #define gObjCtl 0x1EA #else #define OBJECT_BASE 0x3E014C8 #define OBJECT_SIZE 0x2058 #define OBJECT_MIN 2500 #define OBJECT_MAX 4000 #define OBJECT_MAXUSER 1000 #endif
CREDITOS:
MCTeam Software's
Última edição por Diel; 17-09-2009 às 06:03 PM.
E os créditos???
Perdão pelo post se postei errado...
Mais que metodo utilizaram para encontras os:
#define OBJECT_SIZE 0x2048
#define OBJECT_MIN 8000
#define OBJECT_MAX 9000
#define OBJECT_MAXUSER 1000
#define gObjZen 0xD8
#define gObjLupp 0xA8
#define gObjStr 0xDC
#define gObjDex 0xDE
#define gObjVit 0xE0
#define gObjEne 0xE2
#define gObjLogin 0x6C
#define gObjLvl 0xA6
#define gObjNick 0x77
#define gObjClass 0xA0
#define gObjCtl 0x1EA
Obrigado..
Achar essas definições é dificil, precisa ter conhecimento de linguagem Assembly para conseguir determinar com precisão alguns desses valores.
Explicação rápida:
A objectstruct do GameServer é um vetor armazenado sequencialmente na memória, para se acessar um vetor, você precisa de 3 informações:
1-> Ponto inicial do Vetor
2-> Índice Desejado do Vetor
3-> Tamanho de cada membro do vetor
Nesse caso, a CPU cálcula o acesso da seguinte forma: Ponto Inicial + (Tamanho * Índice), análisando pelo OllyDBG, temos algo do tipo:
MOV RX, OBJECT_BASE ; Coloca em um registrador 'X' o ponto inicial do Vetor
MOV RY, aIndex ; Coloca em um registrador 'Y' o índice desejado
IMUL RY, RY, OBJECT_SIZE ; Multiplica o conteúdo do registrador 'Y' pelo tamanho do membro do vetor
ADD RX, RY ; Adiciona ao conteúdo do registrador 'X', o conteúdo do registador 'Y'
Nesse momento, 'X' contém um ponto inicial da ObjectStruct de um Personagem, agora, precisa saber qual é o ponto que deseja ser acessado, a ObjectStruct é uma estrutura heterogênea de dados, ou seja, ela possuí vários pedaços de tamanhos diferentes, juntos, eles formam um membro dela, a CPU acessa, em geral, esses pedaços, usando:
MOV RZ, TYPEDEF PTR DS:[RX+POSIÇÃO]
TYPEDEF: Tipo de dado, podendo ser BYTE, WORD e DWORD.
POSIÇÃO: A posição na ObjectStruct, que no caso, seria esses valores que você tem aí, vamos dizer que queiramos o gObjZen, que é um DWORD na posição 0xD8, ficaria:
MOV RZ, DWORD PTR DS:[RX+D8]
É assim uma das formas de se procurar por esses valores, essa é a forma mais fácil de ser usada no GS 1.00.90, nos GS anteriores, devido ao tipo de alocação que era usado pela ObjectStruct, ele buscava um valor usando essa estrutura:
MOV RX, OBJECT_BASE+POSIÇÃO ; Coloca em um registrador 'X' o ponto inicial do Vetor, já somado ao valor desejado
MOV RY, aIndex ; Coloca em um registrador 'Y' o índice desejado
IMUL RY, RY, OBJECT_SIZE ; Multiplica o conteúdo do registrador 'Y' pelo tamanho do membro do vetor
ADD RX, RY ; Adiciona ao conteúdo do registrador 'X', o conteúdo do registador 'Y'
Como nesse caso a posição desejada já está "inclusa" no inicio do vetor, para determinar qual a posição tem que pegar a calculadora do Windows no modo hexadecimal e calcular, o valor que aparece no Olly menos o valor inicial.
Para achar o valor inicial, tem que procurar alguma função que faça referência ao m_Index, que é a posição 0x00 da Struct, para saber onde isso é usado, o ideal é olhar a source do GS 1.00.18 e procurar no ASM do GS.
Isso é um guia a tanto, provavelmente eu estarei ajudando minha concorrência, pois acredito que muitos que se dizem programadores não sabem nem procurar por valores da ObjectStruct, masss... a comunidade precisava saber como isso funcionava.
Porém, para ter noção de como usar esse "guia", você precisará ter noção de Assembly e C !!!
PS.: Os registradores que eu chamei de RX, RY e RZ, dei esses nomes representativos para eles, pois pode ser considerado qualquer registrador da CPU na hora de fazer esses cálculos, geralmente, o EAX, o EBX, o ECX e o EDX.
Como assim no ASM do GS ?
Poderia me explicar como chego ao ASM do GS ?
Obrigado...
# xxrenanxx
ASM = Assembly, Você consegue ver os mnemônicos (códigos operacionais a nível humano ) da linguagem abrindo o GameServer com o ollydbg.
correto...
Mais tenho qeu ativaqr alguma função no olly para ver esses códigos .. ? ou são os códigos normais msm que aj aparecem quando se abre o olly ?
Abraços..
Você consegue visualizar normalmente sem ativar nenhuma opção no ollydbg.
os registradores mais comuns de 32bits são:
EAX, EBX, ECX, EDX, ESI e EDI
e as instruções mais comuns são:
MOV,CALL,ADD,BT,CMP,DIV,MUL,SHL,TEST,POP,REP,REPE, REPNE,INC,etc...
bom, estou com as mesmas duvidas do force
tecniques o tenso e que vc sempre me falou que sabia programar.......... e tem essa duvida ? ****....
Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)
Marcadores