Tudo que alfbru postou
-
[Stream] desenvolvimento de fishing bot
Boa tarde galerinha!! Um tempo atras desenvolvi um bot para pescar em um ot pokemon, e vou re-escrever o código streamando agora e gravar para o youtube, se alguém quiser vir assistir e tirar dúvidas durante o desenvolvimento estarei lá para ajudar! https://www.livecoding.tv/balf/
-
[C] Checar acesso com criptografia simples
Mas é claro, qual seria o significado de criar uma criptografia "simples" para uso em empresas, bancos, etc... É obvio que eu não consigo descriptografar tais citadas, mas elas não deixam de ser vias de mão única, quem inventou consegue voltar então logo não é impossível nem é uma via de mão única . Sendo simples (no meu exemplo, somando 2 números na asc) ou não, não deixa de ser uma criptografia, o post é apenas um código simples que utiliza algumas funções bem comuns na linguagem além de um exemplo bem simples, como já citado, de criptografia. E não existe criptografia de mão única, se você cria um algoritmo que modifica o texto "macabramente" ou de forma simples, existe como realizar a engenharia reversa. Quanto a RSA em qualquer página que você ler sobre, estará citado que ninguém conseguiu quebrar a criptografia ainda, mas não diz que é impossível, então não é uma via de mão única. Entendam, eu não estou dizendo que não existem criptografias seguras só estou falando que nenhuma é "inquebravel".
-
[C] Checar acesso com criptografia simples
O que eu quis dizer é que não existe encriptação de mão única amigo, até porque para encriptar você precisa realizar uma operação sobre o dado, para descriptografar é só realizar a operação reversa.
-
[C] Checar acesso com criptografia simples
Amigo, criptografia é você codificar um texto, o texto é codificado baseado em uma função. Quem cria a criptografia consegue sim descriptografar, quem possui a "chave" que foi utilizada para criptografar consegue retornar ao texto original, é claro que criar uma criptografia e liberar a "chave" dela pela internet perde todo sentido de criar uma criptografia, o método acima citado é apenas um exemplo de uma bem simples que eu mesmo inventei como exemplo, se eu quisesse multiplicar o o código referente a cada digito por um número primo gigante dificilmente alguem decifraria sem conhecimentos no assunto, mas não deixa de ser criptografia por ser simples, seja simples ou complexa ainda é criptografia.
-
[C] Checar acesso com criptografia simples
Estava 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 }
-
[Teste Programação] Coordenadas de um Ponto
Resolvi em c++
-
[Teste Programação] Lanche
Amigo, 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; }
-
[Teste Programação] Triângulo
Resolvi 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; }
-
Valor da memoria diferente do esperado
Tenta 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!
-
Valor da memoria diferente do esperado
Amigo você não postou a função ReadProcessMemory, o erro deve estar nela, talvez esses links ajudem a resolver seu problema. http://www.tibiaking.com/forum/topic/62981-c-ler-address-do-pxg/ http://www.tibiaking.com/forum/topic/61008-c-lendo-mem%C3%B3ria/
-
[C++] Ler address do pxg
Já 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
-
[c++] Simulando clique do mouse
Para 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
-
Memory Addresses
É difícil achar esses temas específicos, acho que é mais fácil ver um tutorial em ingles de como usar o cheat engine e descobrir sózinho, o cheat engine é bem simples de usar.
-
Memory Addresses
Os endereços agora são mascarados, em outras palavras são dinâmicos alteram-se cada vez que o cliente é aberto e eles são acessados através de um endereço base + offset, esse endereço base é estático, se você conseguir ele e o ponteiro para o valor que quer encontrar conseguirá achar os address.
-
Obter endereço de memória base Tibia Global
Amigo 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!
- Obter endereço de memória base Tibia Global
-
Interação entre Macro e TibiaClien
Se 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..
-
Aprenda a ler address do pxg
client.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.
- Aprenda a ler address do pxg
-
Aprenda a ler address do pxg
Caros 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
-
PXG Bot
Bom, meu outro tópico foi excluido não sei por quais motivos, a questão é que me ausentei por um tempo mas voltei agora a programar o bot, depois da sugestão de um colega no outro tópico e de pesquisar na internet e não encontrar nada relacionado as address do jogo eu pesquisei um pouco com o cheat engine e pronto, encontrei-as e consegui ler! Esse é um print das funções que já estão prontas, não reparem na interface ainda não mexi nela rs. ps: assim que descobrir alguma address relacionada ao "bubble" irei aprimorar o fishing.
-
[DELPHI] Source YouBot
Ele não utiliza nenhuma API, simula apenas teclado e mouse. Lembrando que ele não está pronto para uso, é o código fonte com uma base para quem quer criar um cave bot, healer, etc...
-
HealBot Project !
Não não, rs É possível sim, existe uma função que pega o tamanho da tela (Height, width) da pessoa, e ao invés de fazer as operações pelo tamanho da sua tela, você faz elas usando a função para pegar o tamanho da tela da pessoa, isso faria com que funcionasse em qualquer tamanho de tela.
- Como saber a Distância de um Player / monstro em relação a você!
- Como saber a Distância de um Player / monstro em relação a você!