Archive for the ‘games’ tag
Criando Cheats: Prelúdio
Estudo programação à anos e sempre tive maior interesse no que se refere à arte expressa em pixels. Que sou grande fã de jogos eletrônicos (um mid-core gamer, não casual, nem hardcore) não há dúvidas… e essa paixão estende-se além do ato de jogar e apreciar momentos únicos, que apenas orientais extraterresters (leia Miyamoto) conseguem proporcionar.
Senta que lá vem história
Como todo bom gamer, não me contento em socar o último chefe e sair falando na escola (hoje em dia é twiter, né?) “ZEREI/TERMINEI/FECHEI MAIS UM JOGO”. Pq? A mágica está nos detalhes! Os detalhes que muitas vezes não percebemos quando jogamos pela primeira vez. Aquele canto que não serviu pra NADA durante o jogo, mas que estava lá para ser explorado.
Qual apaixonado por games que terminou Super Mario World e não fez questão de conseguir os 100%? Ou quis passar todas as fases do “ESPECIAL” que não tinham relação alguma com o final do jogo?
Quem já jogou The Legend Of Zelda: Ocarina Of Time e não quis pegar as 100 gold skultullas mesmo sabendo que os rupees ilimitados (que vc tem direito ao final da quest) não valem o esforço?
Mesmo sentindo ausência da mágica nos jogos atuais, ainda não consigo “aposentar” um jogo logo após terminá-lo.
Atualmente faço questão de TER o video-game para poder jogá-lo (adquiri um Super Nintendo recentemente e já estou cotando um Megadrive), mas é impossível comprar todos os cartuchos, até pq alguns nem são comercializados hj em dia (Atari, Nintendinho etc). Então, como todo gamer que possui um computador e sabe da existência dos emuladores (ZSNES!), baixei muitos jogos e terminei cada um deles.
Antes de continuar, queria deixar claro que não sou a favor da pirataria, apesar não ser completamente contra (tudo é relativo…).
Quem conhece um, sabe que a maior virtude do programador é a curiosidade. É claro que não fiquei apenas no “Load Rom/Save State/Load State” do ZSNES. Com o tempo fui descobrindo cada funcionalidade e o que me chamou a atenção foram os códigos que podiam ser inseridos para modificar a jogabilidade ou algum estado do jogo. Testei centenas de códigos em dezenas de jogos e chegou uma hora que não tinha como não me perguntar: como um código esquisito daquele (na época eu não sabia o que era base hexadecimal) podia fazer tanto “estrago” no jogo? E eu sabia que não podia ser nada projetado/previsto pelos programadores do jogo, pois não eram códigos digitados no controle (como uma sequencia de botões), ou inseridos no menu “cheat”.
Nesa fase, fiquei apenas na curiosidade mesmo, pois o material online sobre o asusnto era escasso e meu acesso à internet, mto raro. Tempos depois, qdo comprei o jogo Diablo (o 1 mesmo) e descobri que era possível jogar com outras pessoas na internet, passei várias madrugadas (contava os minutos antes das 00:00h para poder conectar) jogando com os, como diria o bomba, “amiguinhos virtuais“. Até que um gringo filho de uma borboleta entrou na minha “sala“, zerou todos meus stats e removeu todos os meus itens. Não que eu não tenha chutado o cachorro por isso, mas ao passar o susto (raiva, ódio e outros sentimentos sem nome), fui procurar saber sobre códigos/trapaças para Diablo (o termo cheater era novidade pra mim). Qual não foi minha surpresa ao descobrir que o tal programinha BoBaFeTT’s Diablo Trainer podia editar, não só os stats e itens, como podia acrescentar itens que nem mesmo existiam no jogo. Aquela curiosidade sobre como funcionavam os códigos no emulador ZSENS voltou repentinamente, somada ao incrivel fato de poder adicionar elementos que o jogo não possuia originalmente. Devo ter ficado uns 2 dias sem dormir para poder testar todas as opções e armas.
[OFF] Btw, até hj não sei se desligaram os servidores de Diablo I ou se me baniram da Battle.net mesmo u.u [/OFF]
Como nesse tempo eu já havia começado a programar, eu sabia que os stats, pontos de vida e mana estavam armazenados em variáveis e que o cheater, de alguma forma, alterava essas variáveis. Mas também não passou disso, pois muitos conceitos importantes ainda não me eram claros. Como um processo consegue “modificar” a memória de outro?
Então comecei a estudar o comportamento de outros cheaters, como o editor de saves de pokemon para gameboy, ou um executável modificado do jogo freecell que permitia mover qualquer carta para qualquer lugar. Cada um deles funcionando de uma forma diferente.
Aí, veio um amigão da escola e me convenceu de que eu só ia conseguir fazer esse tipo de coisa quando eu programasse fluentemente em Assembly e pudesse fazer qlq coisa em C. O que NÃO é verdade!!!
Depois disso, só voltei a me interessar pelo assunto uns 5 anos depois.
Em 2004 ou 2005 (não lembro) criei copiei e compilei um cheater em Visual Basic 6 para um MMORPG-modinha da época. Como eu apenas modifiquei alguns fontes que peguei na internet, não entendia completamente o que estava acontecendo. Ao ler artigos sobre o assunto e estudar o fonte, entendi que o código simplesmente modificava alguns dados que estavam armazenados na memória utilizada pelo jogo… há! é assim que aquele maldito bobafeet funcionava então!
Passou um tempo, o cheater já estava famoso aqui na minha cidade e muitas lan-houses passaram a usá-lo. Esses “bons jogadores” sempre pediam para adicionar algum feature, tipo que o cheater possa jogar sozinho enquanto ele vê um video educativo no www.***tube.com. Mas tudo bem, moleques de 12 anos não precisam saber a diferença entre cheater e bot ![]()
O final infeliz dessa história eu deixo pra outro post.
Com as atualizações constantes do jogo, eu tb precisava atualizar os endereços de memória modificados pelo cheater, então as coisas começaram a fazer mais sentido. Utilizava o ArtMoney pra escanear a memória do jogo e atualizava a lista de endereços, coisa simples. Nesse processo de escanear e procurar novos endereços, comecei a perceber que vários outros locais armazenavam informações úteis para futuras funções do cheater. E com toda a curiosidade que um programador deve ter, fucei em cada canto do jogo para descobrir mais sobre o funcionamento do mesmo.
E meu cheater?
Pra que serviu toda essa lengalenga? Pra deixar claro que não adianta copiar e compilar os códigos postados aqui. Talvez vc consiga fazer um cheater lecalzinho pra algum jogo, mas só isso. Pra aprender, vc PRECISA ter a curiosidade. A curiosidade matou o gato, mas ensinou ele a utilizar mto bem as outras 6 vidas.
Então, no próximo post vou tentar passar o pouco que sei sobre o tipo de cheater que eu considero mais fácil: os que editam a memória.
The Cake is a Lie
Para deixar bem claro algo que me atormenta desde a década passada.
Dear Mario:
Please come to the
castle. I’ve baked
a cake for you.Yours truly–
Princess Toadstool, Peach
But…

Nuff’said!