Histórico de Curtidas
-
alfbru recebeu reputação de luanluciano93 em [Teste Programação] LancheAmigo, sua resposta está correta mas estes testes de programação são testados com um arquivo de entrada e um de saida, e todo printf é considerado saida, logo quando você interage com o "usuario" pedindo dados, ele fornecerá esse printf como saida também, e em uma maratona de programação sua resposta daria errado, nesses testes o correto é só interagir com o "usuario" o que for solicitado.
Quanto ao tópico fiz uma resposta sem o switch para variar um pouco das demais.
#include <stdio.h> int main() { int cod, quantidade; float codigo[5] = {4.00, 4.50, 5.00, 2.00, 1.50}, total = 0.0; scanf("%d %d", &cod, &quantidade); total = total+(codigo[cod-1]*quantidade); printf("Total a ser pago: R$%.2f\n", total); return 0; }
-
alfbru recebeu reputação de MaTTch em [C++] Ler address do pxgJá havia feito isso em pascal, agora que estou programando em c++ refiz o código, utilizei como estudo este link.
Código:
#include <windows.h> #include <iostream> #include <TlHelp32.h> using namespace std; void RM(uintptr_t *result, uintptr_t address); //Função para obter o valor do endereço base void RD(double *result, uintptr_t offset, uintptr_t base); //Função para obter os valores int main(){ //Variaveis uintptr_t baseaddress, offset, addr; double PlayerHP, PokemonHP, PlayerLevel, PlayerExp, PlayerMaxHP; addr = 0x006C53C0; //Endereço base RM(&baseaddress, addr); //Obtem o valor do endereço base para a soma RD(&PlayerHP, 0x348, baseaddress); //Define a HP do player RD(&PlayerMaxHP, 0x350, baseaddress); //Define a HP máxima do player RD(&PokemonHP, 0x380, baseaddress); //Define a HP do pokemon RD(&PlayerLevel, 0x370, baseaddress); //Define o Level do player RD(&PlayerExp, 0x368, baseaddress); //Define a exp atual do player //Escreve na tela os valores cout << "Player HP: " << PlayerHP << "/" << PlayerMaxHP << "\n"; cout << "Player Exp: " << PlayerExp << "\n"; cout << "Player Level: " << PlayerLevel << "\n"; cout << "Pokemon HP: " << PokemonHP << "\n"; system("pause"); return 0; } void RM(uintptr_t *result, uintptr_t address){ int y; HWND h = NULL; DWORD pid; cout << "Searching PXG Client..." << "\n"; while (h == NULL) { h = FindWindow(NULL, "PXG Client"); Sleep(1000); } cout << "PXG Client found!" << "\n"; GetWindowThreadProcessId(h, &pid); HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); ReadProcessMemory(proc, (LPCVOID)address, &y, 8, NULL); *result = y; } void RD(double *result, uintptr_t offset, uintptr_t base){ uintptr_t address = base + offset; double y; HWND h = NULL; DWORD pid; while (h == NULL) { h = FindWindow(NULL, "PXG Client"); Sleep(100); } GetWindowThreadProcessId(h, &pid); HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); ReadProcessMemory(proc, (LPCVOID)address, &y, 8, NULL); *result = y; }
Qualquer dúvida só deixar nos comentarios.
Fonte: Link
-
alfbru deu reputação a Hazze em [Source] Tibia Better KeyboardEntão galera..
Hoje venho aqui trazer pra vocês um app de minha autoria chamado Tibia Better Keyboard.
Mais o que é isso?
Bem, é um aplicativo muito simples para Tibia que adiciona algumas funções à teclas que
geralmente não são muito usadas no Tibia.
Screenshot
------------Quais são as Funções?------------
-->Diagonal Keys : Move o personagem na diagonal usando teclas direcionais combinadas.
-Exemplo: "Seta pra cima" + "Seta pra esquerda" faz o personagem mover-se pra cima e
para esquerda na diagonal.
-->Extra Text Hotkeys: Adiciona à algumas teclas a capacidade de escrever e enviar textos,
além de também serem usadas para pressionar outras hotkeys do Tibia (usar "page up"
para pressionar "CTRL+F12" por exemplo) ou salvar screenshots.
---------------Como Compilar?--------------
Abra o projeto usando o Delphi 2010, modifique o que você quiser aperte "F9" e pronto!
--------------------Sobre---------------------
TBK é um aplicativo grátis e de código aberto.
Isso significa que você pode usá-lo, distribui-lo, modifica-lo, recompila-lo, vende-lo sem
nenhuma restrição.
Peço apenas que o nome do autor original (Hazze) apareça nos créditos do app.
Para mais informações leia o arquivo "termos de uso" que vai junto ao app.
-----------------DOWNLOADS-----------------
App compilado e pronto para o uso >> Tibia Better Keyboard - BIN.zip
Scan >> VirusTotal
------------
App compilado + Source >> Tibia Better Keyboard.zip
Scan >> VirusTotal
------------
Source (código fonte) >> Tibia Better Keyboard - SRC.zip
Scan >> VirusTotal
------------------------------------------------
Então é isso ai galera um app muito simples mais que pode ser de base pra outros
mais complexos.
Bom proveito!
-
alfbru recebeu reputação de luanluciano93 em [C] Checar acesso com criptografia simplesEstava testando algumas funções e fiz esse código aqui, ele é bem simples mas ajuda a entender uma criptografia bem simples, leitura e escrita em arquivos, a utilização do switch e funções.
Este programa lê uma senha informada pelo usuario e compara com a senha salva em "data.txt", nota-se que ela estará criptografada lá com o carácter equivalente a 2 acima do informado pelo usuario na tabela asc, exemplo: B vai ser salvo como D no arquivo, 1 como 3, e por ai vai.
Após um login com sucesso ele fornece a opção de alterar a senha com o switch e termina o programa.
#include <stdio.h> #include <string.h> void Cript(char p[20]); //Criptografa nova senha e salva no arquivo data.txt void DCript(char p[20]); //Descriptografa senha salva no arquivo int CheckPass(char p[20]); //Compara se a senha informada e a do arquivo são iguais int main() { int check = 1; char pass[20], c; while(check != 0) { printf("Password: "); scanf("%s", pass); getchar(); check = CheckPass(pass); } printf("Acess allowed!\n"); printf("a) Change password\n"); scanf("%c", &c); getchar(); switch(c) { case 'a': { printf("Enter the new password: "); scanf("%s", pass); Cript(pass); } break; } return 0; } void Cript(char p[20]) { int i; FILE *pf; for(i=0; p[i] != '\0'; i++) p[i] = p[i]+2; pf = fopen("data.txt", "w"); if(pf != NULL) { fprintf(pf, "%s", p); } fclose(pf); printf("Password changed!\n"); } void DCript(char p[20]) { int i; for(i=0; p[i] != '\0'; i++) p[i] = p[i]-2; } int CheckPass(char p[20]) { char pcripted[20]=""; FILE *pFile; pFile = fopen("data.txt", "r"); if (pFile != NULL) { fscanf(pFile, "%s", pcripted); } fclose(pFile); DCript(pcripted); if(pcripted[0] == '\0') //Caso não haja nenhuma senha no arquivo, qualquer valor entrado será valido para o acesso return 0; return strcmp(pcripted, p); //Quando as duas strings forem iguais retornará 0 }
-
alfbru recebeu reputação de JulinhoPiuPiu em [Teste Programação] LancheAmigo, sua resposta está correta mas estes testes de programação são testados com um arquivo de entrada e um de saida, e todo printf é considerado saida, logo quando você interage com o "usuario" pedindo dados, ele fornecerá esse printf como saida também, e em uma maratona de programação sua resposta daria errado, nesses testes o correto é só interagir com o "usuario" o que for solicitado.
Quanto ao tópico fiz uma resposta sem o switch para variar um pouco das demais.
#include <stdio.h> int main() { int cod, quantidade; float codigo[5] = {4.00, 4.50, 5.00, 2.00, 1.50}, total = 0.0; scanf("%d %d", &cod, &quantidade); total = total+(codigo[cod-1]*quantidade); printf("Total a ser pago: R$%.2f\n", total); return 0; }
-
alfbru recebeu reputação de luanluciano93 em [Teste Programação] TriânguloResolvi em c++ também.
#include <iostream> using namespace std; int main(){ float A, B, C; cin >> A >> B >> C; if((A+B) > C && (A+C) > B && (B+C) > A) cout << "Perimetro: " << A+B+C << endl; else cout << "Area: " << ((A+B)*C)/2; return 0; }
-
alfbru recebeu reputação de Guilherme em Valor da memoria diferente do esperadoTenta isso
ReadProcessMemory(phandle, (void*)addr,&value,sizeof(value),0); cout << "Valor: " << value << endl;
Muito bom saber que tem gente interessada em programar e espalhar o conhecimento no fórum!
-
alfbru recebeu reputação de nociam em [c++] Simulando clique do mousePara quem gosta do desenvolvimento de ferramentas que simulam gestos humanos este é um bom exemplo, bem iniciante mas mostra como funciona a simulação do mouse utilizando c++ com a API do windows, abaixo o código comentado:
Fonte: Link O código está em .txt no anexo porque não é possível fazer o upload do arquivo em .cpp. clique.txt
-
alfbru recebeu reputação de Wakon em [c++] Simulando clique do mousePara quem gosta do desenvolvimento de ferramentas que simulam gestos humanos este é um bom exemplo, bem iniciante mas mostra como funciona a simulação do mouse utilizando c++ com a API do windows, abaixo o código comentado:
Fonte: Link O código está em .txt no anexo porque não é possível fazer o upload do arquivo em .cpp. clique.txt
-
alfbru recebeu reputação de Fbnk em Obter endereço de memória base Tibia GlobalAmigo eu achei aquele endereço usando o cheat engine, coloquei o endereço da minha health atual, perdi um pouco de vida e pesquisei novamente, achei o endereço do health com o cliente aberto naquele momento, então usei a função do cheat engine que mostra o endereço que levava aquele endereço e achei o endereço base, que quando procurei outras coisas como vida do pokemon, experiência, etc... Ao efetuar o mesmo processo descobri que era a mesma base só mudava o número somado em hexadecimal para obter o endereço.
O truque é abrir o cheat engine e ir fuçando, ver algumas video aulas também ajudam.
Quanto ao conteúdo só tenho o que está em meu blog, tudo que tinha em meu computador sobre delphi (linguagem a qual programava antes) eu apaguei, e estou começando do 0 em outras linguagens, boa sorte com seus estudos!
-
alfbru recebeu reputação de Fbnk em Obter endereço de memória base Tibia GlobalLink
De uma lida nisso amigo, eu expliquei bem por cima baseado no pxg mas é basicamente a mesma coisa!
-
alfbru recebeu reputação de Fbnk em Interação entre Macro e TibiaClienSe você ler não, mas a partir do momento que você "escreve" você está enviando dados para o cliente, ai se tornaria detectável, o jeito mais comum é o envio de packets que foi utilizado antigamente na criação de muitos bots, mas com a pressão do tibia em diminuir o número de bots e o mercado de bots crescendo, formas complexas onde o programa apenas lê os dados de memória e por instruções lógicas utilizando os dados lidos são executados todos os comandos, tanto como saber onde está a backpack, onde arrastar, onde andar, etc..
-
alfbru deu reputação a dm0000 em Auto LoginOi,
Aqui no meu computador o Tibia sempre abre em 600x500 então aqui vai um examplo de auto login:
Ele clica em "Enter Game".
Depois coloca usuário e senha e clica em OK.
#include <iostream> #include <Windows.h> #include <string> //Tibia 600 x 500 client default size //Enter Game = 80x,300y //OK button = 400, 350 int width = 0; int height = 0; RECT rect; std::string login = "seulogin"; std::string password = "suasenha"; int main() { std::cout << "Searching Tibia..." << std::endl; HWND hwndTibia = NULL; while (hwndTibia == NULL) { hwndTibia = ::FindWindow(NULL, "Tibia"); } if (hwndTibia) { std::cout << "Tibia found." << std::endl; GetClientRect(hwndTibia, &rect); width = rect.left - rect.right; height = rect.bottom - rect.top; std::cout << "Resolution : Width: " << width << " Height: " << height << std::endl; //click Enter Game SendMessage(hwndTibia, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(80, 300)); Sleep(25); SendMessage(hwndTibia, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(80, 300)); Sleep(100); ////type login info, username/tab/password if (login.size() > 0 && password.size() > 0) { for (char& l : login) { SendMessage(hwndTibia, WM_CHAR, (int)l, NULL); } SendMessage(hwndTibia, WM_CHAR, 9, NULL); for (char& p : password) { SendMessage(hwndTibia, WM_CHAR, (int)p, NULL); } } ////click ok Sleep(50); SendMessage(hwndTibia, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(320, 345)); Sleep(25); SendMessage(hwndTibia, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(320, 345)); } return 0; } Se ai também só abre nessa resolução pequena quando entra no jogo é só trocar "seulogin" e "suasenha":
std::string login = "seulogin";
std::string password = "suasenha";
Compila e use.
Flw
Eu faço cheat para cs:go, estava procurando outro jogo para começar a fazer cheat e encontrei o Tibia, primeiro vou ver como se joga isso. =p
-
alfbru deu reputação a dm0000 em [C++] Lendo MemóriaExemplo de como pegar hp, ai é só usar a criatividade e pegar mana etc usando os endereços corretos.
#include <iostream> #include <Windows.h> #include <TlHelp32.h> //Tibia 10.80 DWORD GameModule(LPCSTR moduleName, int pId); template<typename TYPE> TYPE RPM(HANDLE proc, DWORD address, SIZE_T size) { TYPE buffer = TYPE(); ::ReadProcessMemory(proc, (LPCVOID)address, &buffer, size, 0); return buffer; } int main() { std::cout << "Searching Tibia..." << std::endl; HWND hwndTibia = NULL; while (hwndTibia == NULL) { hwndTibia = ::FindWindow("TibiaClient", NULL); Sleep(16); } if (!hwndTibia) return 0; std::cout << "Tibia found." << std::endl; DWORD pid; ::GetWindowThreadProcessId(hwndTibia, &pid); DWORD tibiaAddr = GameModule("Tibia.exe", pid); HANDLE proc = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); while (true) { if (tibiaAddr && proc) { system("cls"); int hp = RPM<int>(proc, (tibiaAddr + 0x6D2030), sizeof(int)); int maxHp = RPM<int>(proc, (tibiaAddr + 0x6D2024), sizeof(int)); std::cout << "HP: " << hp << "/" << maxHp << std::endl; } else { break; } Sleep(16); } ::CloseHandle(proc); return 0; } DWORD GameModule(LPCSTR moduleName, int pId) { HANDLE hSnapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pId); MODULEENTRY32 allinfo; BOOL haveProcess = ::Module32First(hSnapShot, &allinfo); while (haveProcess) { if (!strcmp(moduleName, allinfo.szModule)) { return (DWORD)allinfo.modBaseAddr; } haveProcess = ::Module32Next(hSnapShot, &allinfo); } return 0; } -
alfbru deu reputação a Hazze em [Source] Projeto IonBot===============SOURCE IONBOT===============
Então galera..
Meu nome é Anderson tenho 21 anos, não sou programador apenas tenho programação como hobby.
Jogo tibia desde 2008 e me iniciei na programação 2 anos depois em 2010.
Ao inicio foi só por curiosidade que resolvi "aprender" a programar bots pra tibia. Foi ai que eu conheci pascal e posteriormente o delphi.
Criei meu primeiro bot healer apenas vendo sources de exemplos na internet. Ele era bem simples e contia tudo aquilo de simples que todo "1º newbie bot" era capaz de fazer (food eat, ant-kick etc..), mas apesar de simples era funcional.
Um dia pesquisando na net procurando sobre o que mais eu poderia adicionar ao meu bot, encontrei uma source disponibilizada pelo @kimoszin que era capaz de ler o battlelist do tibia.
A partir dai eu fiz varias mudanças no meu healer e criei muitos diferentes projetos de bots sempre procurando adicionar algo a mais.
Esse projeto ionbot foi meu penúltimo projeto de uns 1~2 anos atrás..
Intusiasmado em criar "algo open source" resolvi disponibilizar meu projeto a um tempo abandonado a todos.
Muita coisa (se não a maioria) no bot foi escrita por min apenas usando a lógica por min mesmo.
Nota:
poderá haver trechos na source que podem parecer desnecessários ou até escritos de forma "pré histórica". Como eu disse, eu não sou um programador (pelo menos não um experiente) e tudo que eu sei sobre programação aprendi lendo artigos na net.
Bem vamos ao que interessa..
====>O que o bot faz?
O bot está atualizado para o tibia 10.53 mais pode facilmente ser atualizado.
Healer : auto cura (spell,potion,rune)
Refiller : auto restaura mana
Friend heal : auto cura aliados (com spell, potion ou rune)
Auto-spell : auto "utamo vita", "gran hur", "utito tempo"..
Attack-spells : usa determinada spell/rune na criatura configurada..
Auto-attack : auto ataca criaturas configuradas no attack-spells
Ml-train : treiner de magic level
Auto-eat : usa hotkey do food de tempos em tempos..
Ant-idle : evita o logout do char fazendo ele "dançar"
Runemaker : auto cria runas (com spells já setadas)
Alerts : alerta se player, pk, membro de war etc.. Esta na tela
Reconnect : reconecta o char com login e senha configaráveis
Light-hack : full light do tibia
Scripter : possibilidade de criar scripts em lua engine
O ionbot foi criado com o intuito de tentar minimizar as chances de
ser pego em massban (usando funções de teclado e mouse em intervalos
ramdômicos).
Eu e mais 4~5 amigos meus, usamos ele durante muito tempo (mais de ano)
e ninguem foi pego em mass ban.
Lembre-se : ao usar qualquer bot/macro de qualquer tipo (com simulação
de teclado/mouse, com packets, dll injection, memory write etc..)
Você sempre estará sujeito a ser banido/deleted.
Á muita coisa o que se pode fazer com essa source basta ter imaginação.
>>um exemplo é um client hack (onde se pode "usar" mounts, outfits premium
alterando valores na memoria do tibia).
>>outro exemplo é criar um "auto equip item" já que na versão atual do
tibia é possivel equipar items através de hotkeys.
Todas as funções podem ser facilmente alteradas para bem atender ao que
se deseja fazer.
====>Como posso editar e recompilar o bot?
O bot foi escrito no delphi 2010. Para ser mais especifico eu usei o
embarcadero rad studio 2010 sem componentes adicionais.
====>Como atualizar a source para a versão atual do tibia?
basicamente isso pode ser feito apenas atualizando os endereços de memória
do tibia para a versão atual. Com o cheat engine é possivel achar todos
os endereços.
====>Você dará suporte para resolver dúvidas sobre a source?
Provavelmete não. Caso eu encontre tempo para responder eu responderei
mais é bem provável que não. Apesar de alguns trechos não estarem
"comentados" a source está muito fácil de ser entendida.
====>Porquê você está disponibilizando e tornando free open source?
Já vi muitas pessoas fazerem isso com aplicativos bem mais complexos.
Apesar de ter gastado muito tempo "montando" esse bot não vejo porquê não
disponibilizar.
====>Porquê você escolheu o tibiaking para postar?
A grande maioria das minhas dúvidas foi exclarecida aqui. Não vejo porque
não contribuir com o que eu aprendi.
====>O que eu posso fazer com a source?
Basicamente você pode fazer o que você quiser com a source. A partir de hoje
eu a tornei um projeto open source. A única coisa que eu peço
(e nem precisava pedir) é um simples "obrigado por compartilhar" e que tenha
em mente que estou fazendo isso de bom grado.
Mantendo os créditos da source eu também agradeceria.
@AndersonHz ou @Hazze (Eu) : Por iniciar o projeto e montar o bot.
@Kimoszin : Por ajudar com funções/explicações essenciais
@TibiaKing : Pela oportunidade de compartilhar o projeto aqui.
@Outros : Por disponibilizar bibliotecas (como a Unit Lua) funções, turoriais etc..
====>Informações adicionais
Muitas funções do bot foram tiradas da internet e eu não sei a quem devo
me dirigir quanto aos creditos de cada função.
Quase todas foram adaptadas por min.
Basicamente eu apenas "montei um bot simples" com o que eu achei/aprendi
na internet.
Pequenas sources postadas aqui que fizeram a diferença.
Gostaria de agradecer também a outras pessoas, mais eu nem lembro mais
onde tirei os códigos e muito menos os nomes.
Espero que seja de ajuda esse pequeno e simples projeto.
Obrigado a você que leu todo esse texto (sei que muitos irão apenas baixar)
Comente o que achou do bot, poste a sua versão melhorada da source ou pelo
menos agradeça se foi de ajuda. Não custa nada .
Postar a versão melhorada da source será de ajuda a todos.
PEÇO QUE POR FAVOR MANTENHA OS DEVIDOS AUTORES DO BOT (ISSO INCLUI
OS AUTORES DAS BIBLIOTECAS/FUNÇÕES/PROCEDURES USADAS NO MESMO).
O DOWNLOAD DA SOURCE ESTÁ ANEXADO AO POST.
ionBot.zip
NAO POSTAREI O SCAN DO ARQUIVO POIS SE TRATA DA SOURCE E NÃO DO PROJETO COMPILADO.
Se alguém quiser o projeto compilado é só pedir que eu posto.
BOM PROVEITO E Obrigado Galera.
Algumas screenshots:
-
alfbru recebeu reputação de Snowsz em Aprenda a ler address do pxgAcho que não amigo, acho que o do tibia é um bem diferente, mas se quiser posso tentar fazer um video ensinando a achar a do tibia.
-
alfbru recebeu reputação de Snowsz em Aprenda a ler address do pxgclient.BaseAddress = pointer;
36F7F0 = offset;
a lógica é a mesma, o address estático é o baseaddress quando somado com o offset retorna um valor, sinceramente não faço ideia nem do que é ClientRsa mas se você encontrar um address qualquer no cheat engine, que seja o o dinâmico referente a hp do personagem por exemplo, você pode ir na função "find out what acess this address" do cheat engine, lá você vai obter os endereços aquela memória, você vai em qualquer monstro e deixa ele te dar 1 dano, aparecerá uma ou mais linhas la, você clica em alguma delas e vai mostrar "possívelmente o pointer para esse endereço é : ...", ali você achou o valor atual do baseaddress, tendo isso você procuraria por ele no cheat engine e obteria por aquele valor, você acharia uma address estática que o valor dela sempre que o cliente é aberto somado com o offset desejado vai retornar a address que deseja ler.
-
alfbru recebeu reputação de Flavio S em Aprenda a ler address do pxgclient.BaseAddress = pointer;
36F7F0 = offset;
a lógica é a mesma, o address estático é o baseaddress quando somado com o offset retorna um valor, sinceramente não faço ideia nem do que é ClientRsa mas se você encontrar um address qualquer no cheat engine, que seja o o dinâmico referente a hp do personagem por exemplo, você pode ir na função "find out what acess this address" do cheat engine, lá você vai obter os endereços aquela memória, você vai em qualquer monstro e deixa ele te dar 1 dano, aparecerá uma ou mais linhas la, você clica em alguma delas e vai mostrar "possívelmente o pointer para esse endereço é : ...", ali você achou o valor atual do baseaddress, tendo isso você procuraria por ele no cheat engine e obteria por aquele valor, você acharia uma address estática que o valor dela sempre que o cliente é aberto somado com o offset desejado vai retornar a address que deseja ler.
-
alfbru recebeu reputação de Fir3element em Aprenda a ler address do pxgclient.BaseAddress = pointer;
36F7F0 = offset;
a lógica é a mesma, o address estático é o baseaddress quando somado com o offset retorna um valor, sinceramente não faço ideia nem do que é ClientRsa mas se você encontrar um address qualquer no cheat engine, que seja o o dinâmico referente a hp do personagem por exemplo, você pode ir na função "find out what acess this address" do cheat engine, lá você vai obter os endereços aquela memória, você vai em qualquer monstro e deixa ele te dar 1 dano, aparecerá uma ou mais linhas la, você clica em alguma delas e vai mostrar "possívelmente o pointer para esse endereço é : ...", ali você achou o valor atual do baseaddress, tendo isso você procuraria por ele no cheat engine e obteria por aquele valor, você acharia uma address estática que o valor dela sempre que o cliente é aberto somado com o offset desejado vai retornar a address que deseja ler.
-
alfbru recebeu reputação de Flavio S em Aprenda a ler address do pxgCaros amigos do Tibiaking, essa sessão de programação está muito parada, então vou tentar trazer conteúdo novo para vocês pelo menos uma vez na semana, como sou contra os famosos programadores de "ctrl c ctrl v", vou vir disponibilizando apenas os soucers e comentando a lógica que usei nos programas, abaixo aprenda a ler as address e um source feito em delphi 7 com a aplicação do que expliquei. Vamos lá, como podem ver na imagem está mostrando a address utilizada para leitura e a leitura da mesma, o que acontece que muitas pessoas não conseguiam achar ela ao usar o cheat engine se da ao fato de que os endereços de memória mudam a cada vez que o cliente é aberto (randômicos), porém todo endereço randômico tem uma forma de ser gerado, e o sistema aqui é bem simples, existe um endereço estático (que não se altera) quando o cliente é aberto e fechado, este endereço estático: 006C03B0 (4 bytes), que possui como valor um número em hexadecimal é sempre a base para alguns dos endereços de memória estáticos, entre eles os que estão na imagem. Outro problema que leigos no cheat engine devem ter se deparado é o fato de não encontrarem nenhuma address, isso se dá porque os endereços de memória (pelo menos os que encontrei) estão no tipo double. Ok, mas e agora? Você já possui o endereço de memória base para encontrar as address sempre que o cliente for aberto, possui o tipo de variável usando nos endereços de memória, como fazer para encontra-las? Vamos lá, o método usado para os endereços de memória é bem simples, o valor do endereço de memória 006C03B0 (em hexadecimal) somado com o valor de uma offset vai nos resultar o endereço de memória que queremos saber, o offset é um valor que será somado também em hexadecimal, ao valor do endereço de memória 006C03B0, a soma desses valores nos resultará no endereço de memória que procuramos. Por exemplo, o offset referente a vida do personagem é 348 (não se esqueça que esse valor está em hexadecimal), vamos imaginar que o valor de 006C03B0 é 0C99DA08, ao somarmos o valor $0C99DA08 + $348 obteremos 0C99DD50, o endereço de memória da vida do personagem, sobre o resultado dessa conta se lermos ele como double na linguagem que estivermos usando obteremos a vida atual do personagem como resposta. Informação importante: O jogo pode alterar o endereço estático que informei após alguma atualização, até hoje não alteraram, esse endereço é do tipo 4 bytes e resulta um valor do tipo hexadecimal.
Fonte: Link || Link
leraddress.rar
-
alfbru recebeu reputação de Snowsz em Aprenda a ler address do pxgCaros amigos do Tibiaking, essa sessão de programação está muito parada, então vou tentar trazer conteúdo novo para vocês pelo menos uma vez na semana, como sou contra os famosos programadores de "ctrl c ctrl v", vou vir disponibilizando apenas os soucers e comentando a lógica que usei nos programas, abaixo aprenda a ler as address e um source feito em delphi 7 com a aplicação do que expliquei. Vamos lá, como podem ver na imagem está mostrando a address utilizada para leitura e a leitura da mesma, o que acontece que muitas pessoas não conseguiam achar ela ao usar o cheat engine se da ao fato de que os endereços de memória mudam a cada vez que o cliente é aberto (randômicos), porém todo endereço randômico tem uma forma de ser gerado, e o sistema aqui é bem simples, existe um endereço estático (que não se altera) quando o cliente é aberto e fechado, este endereço estático: 006C03B0 (4 bytes), que possui como valor um número em hexadecimal é sempre a base para alguns dos endereços de memória estáticos, entre eles os que estão na imagem. Outro problema que leigos no cheat engine devem ter se deparado é o fato de não encontrarem nenhuma address, isso se dá porque os endereços de memória (pelo menos os que encontrei) estão no tipo double. Ok, mas e agora? Você já possui o endereço de memória base para encontrar as address sempre que o cliente for aberto, possui o tipo de variável usando nos endereços de memória, como fazer para encontra-las? Vamos lá, o método usado para os endereços de memória é bem simples, o valor do endereço de memória 006C03B0 (em hexadecimal) somado com o valor de uma offset vai nos resultar o endereço de memória que queremos saber, o offset é um valor que será somado também em hexadecimal, ao valor do endereço de memória 006C03B0, a soma desses valores nos resultará no endereço de memória que procuramos. Por exemplo, o offset referente a vida do personagem é 348 (não se esqueça que esse valor está em hexadecimal), vamos imaginar que o valor de 006C03B0 é 0C99DA08, ao somarmos o valor $0C99DA08 + $348 obteremos 0C99DD50, o endereço de memória da vida do personagem, sobre o resultado dessa conta se lermos ele como double na linguagem que estivermos usando obteremos a vida atual do personagem como resposta. Informação importante: O jogo pode alterar o endereço estático que informei após alguma atualização, até hoje não alteraram, esse endereço é do tipo 4 bytes e resulta um valor do tipo hexadecimal.
Fonte: Link || Link
leraddress.rar
-
alfbru recebeu reputação de Fir3element em Aprenda a ler address do pxgCaros amigos do Tibiaking, essa sessão de programação está muito parada, então vou tentar trazer conteúdo novo para vocês pelo menos uma vez na semana, como sou contra os famosos programadores de "ctrl c ctrl v", vou vir disponibilizando apenas os soucers e comentando a lógica que usei nos programas, abaixo aprenda a ler as address e um source feito em delphi 7 com a aplicação do que expliquei. Vamos lá, como podem ver na imagem está mostrando a address utilizada para leitura e a leitura da mesma, o que acontece que muitas pessoas não conseguiam achar ela ao usar o cheat engine se da ao fato de que os endereços de memória mudam a cada vez que o cliente é aberto (randômicos), porém todo endereço randômico tem uma forma de ser gerado, e o sistema aqui é bem simples, existe um endereço estático (que não se altera) quando o cliente é aberto e fechado, este endereço estático: 006C03B0 (4 bytes), que possui como valor um número em hexadecimal é sempre a base para alguns dos endereços de memória estáticos, entre eles os que estão na imagem. Outro problema que leigos no cheat engine devem ter se deparado é o fato de não encontrarem nenhuma address, isso se dá porque os endereços de memória (pelo menos os que encontrei) estão no tipo double. Ok, mas e agora? Você já possui o endereço de memória base para encontrar as address sempre que o cliente for aberto, possui o tipo de variável usando nos endereços de memória, como fazer para encontra-las? Vamos lá, o método usado para os endereços de memória é bem simples, o valor do endereço de memória 006C03B0 (em hexadecimal) somado com o valor de uma offset vai nos resultar o endereço de memória que queremos saber, o offset é um valor que será somado também em hexadecimal, ao valor do endereço de memória 006C03B0, a soma desses valores nos resultará no endereço de memória que procuramos. Por exemplo, o offset referente a vida do personagem é 348 (não se esqueça que esse valor está em hexadecimal), vamos imaginar que o valor de 006C03B0 é 0C99DA08, ao somarmos o valor $0C99DA08 + $348 obteremos 0C99DD50, o endereço de memória da vida do personagem, sobre o resultado dessa conta se lermos ele como double na linguagem que estivermos usando obteremos a vida atual do personagem como resposta. Informação importante: O jogo pode alterar o endereço estático que informei após alguma atualização, até hoje não alteraram, esse endereço é do tipo 4 bytes e resulta um valor do tipo hexadecimal.
Fonte: Link || Link
leraddress.rar
-
alfbru recebeu reputação de rockxpixel em [Dúvida] Qual o melhor bot BBot ou iBotIbot, simples de mecher, perfeito cavebot.
-
alfbru deu reputação a Kimoszin em [C#] Sistema de AddressesNão vou falar muito, pois basicamente ele carrega os endereço de memorias de um arquivo externo, no caso um .xml.
Está bem simples, mas da pra melhorar e adaptar o sistema.
Só acho que seria bacana, pois é muito raro mudar o esquema que as coisas funcionam na maioria das vezes só muda os endereços, acho que fica mais fácil atualizar assim.
PS: Eu que tenho preguiça de abrir o projeto para adicionar os novos endereços prefiro esse metodo.
Sistema de Addresses.rar
-
alfbru deu reputação a Kimoszin em BattleList: One-ShotBom, aqui está uma source como ler a BattleList de um jeito diferente, e mais rápido.
BattleList One-Shot.rar
Qualquer duvida sobre a source, só postart.
Estou com preguiça de explicar.