Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2022-03-03, 00:56
  #1
Medlem
Som nybörjare var ska man börja ifall man vill kunna utveckla applikationer som fungerar som "BOT's" till spel (Dvs automatiserade program som gör funktioner i spel)

Vad jag förstått så är C++ / Assembly bra att lära sig, men då detta är en hård väg som nybörjare så funderar jag lite var man ska börja, gäller lättare programmeringspråk så som python/C# för att sedan gå över till dessa tyngre språken som verkar vara några trösklar över i inlärning?

Om man skulle vilja börja någonstans lätt för att se hur reverse enginerring med spel funkar, var börjar man?

Då detta är något som människor stör sig på då man 'förstör' för spel och dylikt så vill jag poängtera att om man är intresserad av att lära sig saker så tycker jag att man ska kunna ta denna väg in då det finns legitima anledningar och nytta för att lära sig detta.

Så etik/moral åsikter undanbedes vänligen.
Citera
2022-03-03, 01:11
  #2
Medlem
SvenHelsings avatar
Steget till att reverse engineera spel är rätt långt. Men här kan assembler mycket riktigt vara värdefullt.

Men jag skulle rekommendera att börja med Python eller något annat nybörjarvänligt språk. Vet ej vilket språk som är lämpligt för att koda botar, men du måste hur som helst lära dig att programmera enklare program först så du får in tänket.
Citera
2022-03-03, 01:38
  #3
Medlem
Citat:
Ursprungligen postat av FlexibelHottentott
Som nybörjare var ska man börja ifall man vill kunna utveckla applikationer som fungerar som "BOT's" till spel (Dvs automatiserade program som gör funktioner i spel)

Vad jag förstått så är C++ / Assembly bra att lära sig, men då detta är en hård väg som nybörjare så funderar jag lite var man ska börja, gäller lättare programmeringspråk så som python/C# för att sedan gå över till dessa tyngre språken som verkar vara några trösklar över i inlärning?

Om man skulle vilja börja någonstans lätt för att se hur reverse enginerring med spel funkar, var börjar man?

Då detta är något som människor stör sig på då man 'förstör' för spel och dylikt så vill jag poängtera att om man är intresserad av att lära sig saker så tycker jag att man ska kunna ta denna väg in då det finns legitima anledningar och nytta för att lära sig detta.

Så etik/moral åsikter undanbedes vänligen.

Du måste nog uppge vilken typ av spel du tänkt inrikta dig på, metodiken kan vara helt olika om du tänkt rikta in dig på en NES rom eller ett pc-spel från 2007.
Citera
2022-03-03, 09:36
  #4
Medlem
Citat:
Ursprungligen postat av SvenHelsing
Steget till att reverse engineera spel är rätt långt. Men här kan assembler mycket riktigt vara värdefullt.

Men jag skulle rekommendera att börja med Python eller något annat nybörjarvänligt språk. Vet ej vilket språk som är lämpligt för att koda botar, men du måste hur som helst lära dig att programmera enklare program först så du får in tänket.

Tack, precis som du sa så tänkte jag att man lär sig vanlig programmering först för att få tänket som som du sa.

Citat:
Ursprungligen postat av carlydeveloper
Du måste nog uppge vilken typ av spel du tänkt inrikta dig på, metodiken kan vara helt olika om du tänkt rikta in dig på en NES rom eller ett pc-spel från 2007.
PC spel / Online (Gjorda för Windows miljö)
Citera
2022-03-03, 10:13
  #5
Medlem
a-mortals avatar
Citat:
Ursprungligen postat av FlexibelHottentott
Som nybörjare var ska man börja ifall man vill kunna utveckla applikationer som fungerar som "BOT's" till spel (Dvs automatiserade program som gör funktioner i spel)

Vad jag förstått så är C++ / Assembly bra att lära sig, men då detta är en hård väg som nybörjare så funderar jag lite var man ska börja, gäller lättare programmeringspråk så som python/C# för att sedan gå över till dessa tyngre språken som verkar vara några trösklar över i inlärning?

Om man skulle vilja börja någonstans lätt för att se hur reverse enginerring med spel funkar, var börjar man?

Då detta är något som människor stör sig på då man 'förstör' för spel och dylikt så vill jag poängtera att om man är intresserad av att lära sig saker så tycker jag att man ska kunna ta denna väg in då det finns legitima anledningar och nytta för att lära sig detta.

Så etik/moral åsikter undanbedes vänligen.

Citat:
Ursprungligen postat av FlexibelHottentott
Tack, precis som du sa så tänkte jag att man lär sig vanlig programmering först för att få tänket som som du sa.


PC spel / Online (Gjorda för Windows miljö)

Det finns olika svårighetsgrader.
Om det är ett java spel kan man ladda ner en java decompiler och ibland få hela koden direkt.
Det finns verktyg för att omvandla exe-program till assembly-kod, t.ex Cheat Enginge.
Vissa spel kan ha ett eget språk som spelmotorn processar och det kan vara väldigt krångligt då deras egna språk ofta är begränsat.
Om det är online kan det vara programmerat på ett sätt för att motverka bot-tillverkning.
Onlinespel har ju två sidor, server och klient, och det är trixigt att få dem att samverka.

Idag går det nog mycket snabbare att skapa en kopia av spelet än att modda existerande, jag rekommenderar starkt att ta den vägen, om syftet är att ha bots. Att demontera program är lärorikt och man lär sig hur olika spel tillverkats och hur de fungerar, så man inte upprepar deras misstag. Det går inte att få tillbaka tiden, så det är viktigt att man kontrollerar vad man kommer behöva i framtiden och nyttjar tiden optimalt.

Programmering tar ofta för mycket tid.
Citera
2022-03-03, 12:11
  #6
Medlem
Citat:
Ursprungligen postat av a-mortal
Det finns olika svårighetsgrader.
Om det är ett java spel kan man ladda ner en java decompiler och ibland få hela koden direkt.
Det finns verktyg för att omvandla exe-program till assembly-kod, t.ex Cheat Enginge.
Vissa spel kan ha ett eget språk som spelmotorn processar och det kan vara väldigt krångligt då deras egna språk ofta är begränsat.
Om det är online kan det vara programmerat på ett sätt för att motverka bot-tillverkning.
Onlinespel har ju två sidor, server och klient, och det är trixigt att få dem att samverka.

Idag går det nog mycket snabbare att skapa en kopia av spelet än att modda existerande, jag rekommenderar starkt att ta den vägen, om syftet är att ha bots. Att demontera program är lärorikt och man lär sig hur olika spel tillverkats och hur de fungerar, så man inte upprepar deras misstag. Det går inte att få tillbaka tiden, så det är viktigt att man kontrollerar vad man kommer behöva i framtiden och nyttjar tiden optimalt.

Programmering tar ofta för mycket tid.

Tack för ditt inlägg! Uppskattas!
Kör just nu programmering men att vara i nivå på programmering 1 så känns det inte så förberett för att hoppa in i assembly men tänker om det finns någon inkörningsport som gör att jag kan få smaka av att göra något som driver mig i alla fall.

När du säger kopia av spelet istället för att modda existerande spel hur exakt menar du att man ska göra i så fall?
När jag säger BOT's så menar jag automatiserade program som gör funktionerna i spelen åt en.

T.ex en applikationen som gör att en gubbe i ett MMORPG spel går runt automatiskt för att undvika Away-From-Keyboard funktionen som gör att man blir utsparkad/utloggad.

Yes, flera spel har ju Anti-Cheat på deras serverside oftast och även spel som Anti-cheat sitter på klientsidan. Tänker det är ett massivt hopp att undgå dessa bara från början, därför är det ju ännu svårare att ens försöka.

Därför tänkte jag om man kunde börja någonstans enkelt där man hittar något spel som man bara kan testa på för att se ifall man kan skapa ett så kallat fusk eller bot för att göra olika saker.

Cheat Engine är alltså en applikation som scannar av befintliga spel och ger en översikt av viss del av spelets source-kod?

Och sedan för att manipulera det som skickas och tas emot så skapar man upp en applikation (är det här var något specifikt programmeringspråk är bra?) som ger förvrängda/manuellt insatta värden för att få det man vill?
Citera
2022-03-03, 14:14
  #7
Medlem
Inte lätt att decompila ett c++ program till något läsbart, närmast omöjligt. Om du försöker med ett pc-spel så snackar vi hutlös mäng data. Då är analysen det som tar tid, vad som gör vad på assembly-nivå. Jag skulle inte ens börja om jag inte var redigt intresserad att implementera något väldigt specifikt i ett spel.
__________________
Senast redigerad av carlydeveloper 2022-03-03 kl. 14:17.
Citera
2022-03-04, 06:25
  #8
Medlem
a-mortals avatar
Citat:
Ursprungligen postat av FlexibelHottentott
Tack för ditt inlägg! Uppskattas!
Kör just nu programmering men att vara i nivå på programmering 1 så känns det inte så förberett för att hoppa in i assembly men tänker om det finns någon inkörningsport som gör att jag kan få smaka av att göra något som driver mig i alla fall.

När du säger kopia av spelet istället för att modda existerande spel hur exakt menar du att man ska göra i så fall?
När jag säger BOT's så menar jag automatiserade program som gör funktionerna i spelen åt en.

T.ex en applikationen som gör att en gubbe i ett MMORPG spel går runt automatiskt för att undvika Away-From-Keyboard funktionen som gör att man blir utsparkad/utloggad.

Yes, flera spel har ju Anti-Cheat på deras serverside oftast och även spel som Anti-cheat sitter på klientsidan. Tänker det är ett massivt hopp att undgå dessa bara från början, därför är det ju ännu svårare att ens försöka.

Därför tänkte jag om man kunde börja någonstans enkelt där man hittar något spel som man bara kan testa på för att se ifall man kan skapa ett så kallat fusk eller bot för att göra olika saker.

Cheat Engine är alltså en applikation som scannar av befintliga spel och ger en översikt av viss del av spelets source-kod?

Och sedan för att manipulera det som skickas och tas emot så skapar man upp en applikation (är det här var något specifikt programmeringspråk är bra?) som ger förvrängda/manuellt insatta värden för att få det man vill?

När jag säger gör en kopia menar jag gör en egen klient och server, ett eget spel som liknar det du gillar. Det är mycket mer värt tiden då du kan visa upp vad du gjort. Om jag fick gå tillbaka i tiden skulle jag gjort det, som "hacker" är det mycket fördomsfulla krav och förväntningar som ställs. Om du verkligen måste göra en bot så kan du följa någon bot making tutorial på youtube.

Cheat Engine är ett väldigt enkelt verktyg för värde manipulation, men också ett verktyg som man kan ändra hur program fungerar helt och hållet. Man kan ex.v. felkorrigera spel med hjälp av Cheat Engines debugger. Det den inte gör är att producera källkod, den kan dock översätta instruktionerna till assembly, som sagt.

Om du låser dig till programmering 1-nivån kan du inte göra så mycket. Det finns inga gränser, bara komplexitet. För att inte göra det för komplext råder jag att göra enklare grejer först. Tänk inte att det är svårt, tänk att det är enkelt. Undantag för 3d-fysiksimulator för det är svårt.

Gör en egen 2d mmorpg. Så länge du delar upp det, blir det nog bra. Som konstnärer jobbar programmerare från "rough to fine", det vill säga gör inte detaljer först, utan börja med att: skapa en ruta, få den att animera bilder, skapa användarkontroll, gör någon enkel interface, gör en enkel värld, testa skapa online funktionalitet som protokoll och portar, spela upp ljud. När du gjort det har du allt som krävs, och det är bara att pussla ihop och detaljera.

Det viktigaste är att göra det som driver dig när du lär dig som också producerar något du kan sälja dina förmågor med eller som produkt. Annars kommer du bli fattig på pengar och samhället fattig på produkter och folk utan förmågor, ett tråkigt samhälle. Gör något nyttigt med din tid.
Citera
2022-03-04, 06:32
  #9
Medlem
a-mortals avatar
Citat:
Ursprungligen postat av carlydeveloper
Inte lätt att decompila ett c++ program till något läsbart, närmast omöjligt. Om du försöker med ett pc-spel så snackar vi hutlös mäng data. Då är analysen det som tar tid, vad som gör vad på assembly-nivå. Jag skulle inte ens börja om jag inte var redigt intresserad att implementera något väldigt specifikt i ett spel.

Det är nog mycket enklare än du tror.

Har inte provat själv men Snowman till IDA fungerar nog rätt bra.
https://derevenets.com/
Citera
2022-03-05, 13:19
  #10
Medlem
Telepatisks avatar
Citat:
Ursprungligen postat av FlexibelHottentott
Botter man
Om du inte kan programmera sen innan så rekommenderar jag att du använder C#. Finns ganska mycket kod online för läsa/skriva minne och för att simulera input etc. i C#. Att göra det i C/C++ är coolare dock

Vill du lära dig att använda decompilers, disassemblers och debuggers så kolla här (OBS, ganska tungt):
https://crackmes.one/

Förövrigt:
Decompiler = Försöker översätta maskinkoden till något högnivåspråk (oftast C/C++?). Decompilern kan omöjligen veta hur programmet var skrivet från början så den gör det så gott det går. Hjälper om man har en debugfil med till programmet. Vet inte hur mycket det ger för att göra bottar dock, känns mer användbart vid cracking.
Disassemblers = Översätter maskinkoden till assemblerkod.
Debugger = Används för att läsa och skriva i ett programs minne när det är igång. Brukar hänga ihop med disassemblers.

Jag brukar köra Ghidra som decompiler/disassembler. x64dbg som disassembler/debugger. Samt Cheat Engine som debugger.

Men det är roligare och enklare att börja med Cheat Engine så jag rekommenderar att du börjar med något äldre 2D-spel.

T.ex. något simpelt du kan göra:
Starta något gammalt 2D-spel och hooka upp Cheat Engine.

Om du t.ex. har ammunition i spelet, säg 55 st, så kan du söka i Cheat Engine efter 55 som värde och så listar den alla minnesadresser med värdet 55. Du kan få 100 000 st matchningar så se till att du nu har 54 st ammunition istället i spelet. Då kan du filtrera din gamla sökning i Cheat Engine efter det som blivit 55 -> 54 och då få betydligt mindre matchningar. Sen kan du repetera det tills du har några rader kvar bara. Då kan du testa att ändra några av matchningarna i Cheat Engine till säg 200 st, och sen kolla om det ändrades i spelet. Men detta är ju mer åt trainers-hållet än bottar.

Förövrigt så är det är viktigt att du förstår innebörden av datatyper när du håller på med Cheat Engine.

Onlinespel brukar ha skydd som bannar en om man hookar upp t.ex. Cheat Engine. Nyare spel brukar även ha någon form av kod-obfuscation. Det är väl någon form av komprimering som sedan "packas upp" så fort man startar spelet. Kan fortfarande debugga det vid körning.

Någon skrev tidigare att man inte kan dekompilera C++-program. Det brukar väl främst vara om det kompilerades med -O3 vilket inte många är.

Nu har jag minimal erfarenhet av det här, men när man gör bottar så tycker jag att det svåraste är:
  • Hitta "bas"-pekare och offsets till minnesadresser. Säg att du hittade minnesadressen för din ammunition tidigare. Om du startar om spelet så kommer den adressen peka på något annat, troligtvis skräp. Du behöver alltså hitta en pekare som pekar mot en annan pekare som pekar mot ... som pekar mot din ammunition. Sen offsets också o.s.v. Exempel:
    https://www.ownedcore.com/forums/wor...-pointers.html
  • Simulera input. Jag har inte så bra koll men tror spel brukar använda sig av DirectInput och XInput (nyare). Dom som använder sig av DirectInput kan man simulera knapptryck till enkelt tror jag. XInput är väldigt krångligt.
Läsvärt:
https://en.wikipedia.org/wiki/Decompiler
https://en.wikipedia.org/wiki/Disassembler
https://en.wikipedia.org/wiki/Debugger

För Cheat Engine så finns det mycket på Youtube. För att simulera input så rekommenderar jag dig till att ta det senare för det är verkligen ett helvete
__________________
Senast redigerad av Telepatisk 2022-03-05 kl. 13:28.
Citera
2022-03-06, 14:18
  #11
Medlem
Citat:
Ursprungligen postat av Telepatisk
Om du inte kan programmera sen innan så rekommenderar jag att du använder C#. Finns ganska mycket kod online för läsa/skriva minne och för att simulera input etc. i C#. Att göra det i C/C++ är coolare dock

Vill du lära dig att använda decompilers, disassemblers och debuggers så kolla här (OBS, ganska tungt):
https://crackmes.one/

Förövrigt:
Decompiler = Försöker översätta maskinkoden till något högnivåspråk (oftast C/C++?). Decompilern kan omöjligen veta hur programmet var skrivet från början så den gör det så gott det går. Hjälper om man har en debugfil med till programmet. Vet inte hur mycket det ger för att göra bottar dock, känns mer användbart vid cracking.
Disassemblers = Översätter maskinkoden till assemblerkod.
Debugger = Används för att läsa och skriva i ett programs minne när det är igång. Brukar hänga ihop med disassemblers.

Jag brukar köra Ghidra som decompiler/disassembler. x64dbg som disassembler/debugger. Samt Cheat Engine som debugger.

Men det är roligare och enklare att börja med Cheat Engine så jag rekommenderar att du börjar med något äldre 2D-spel.

T.ex. något simpelt du kan göra:
Starta något gammalt 2D-spel och hooka upp Cheat Engine.

Om du t.ex. har ammunition i spelet, säg 55 st, så kan du söka i Cheat Engine efter 55 som värde och så listar den alla minnesadresser med värdet 55. Du kan få 100 000 st matchningar så se till att du nu har 54 st ammunition istället i spelet. Då kan du filtrera din gamla sökning i Cheat Engine efter det som blivit 55 -> 54 och då få betydligt mindre matchningar. Sen kan du repetera det tills du har några rader kvar bara. Då kan du testa att ändra några av matchningarna i Cheat Engine till säg 200 st, och sen kolla om det ändrades i spelet. Men detta är ju mer åt trainers-hållet än bottar.

Förövrigt så är det är viktigt att du förstår innebörden av datatyper när du håller på med Cheat Engine.

Onlinespel brukar ha skydd som bannar en om man hookar upp t.ex. Cheat Engine. Nyare spel brukar även ha någon form av kod-obfuscation. Det är väl någon form av komprimering som sedan "packas upp" så fort man startar spelet. Kan fortfarande debugga det vid körning.

Någon skrev tidigare att man inte kan dekompilera C++-program. Det brukar väl främst vara om det kompilerades med -O3 vilket inte många är.

Nu har jag minimal erfarenhet av det här, men när man gör bottar så tycker jag att det svåraste är:
  • Hitta "bas"-pekare och offsets till minnesadresser. Säg att du hittade minnesadressen för din ammunition tidigare. Om du startar om spelet så kommer den adressen peka på något annat, troligtvis skräp. Du behöver alltså hitta en pekare som pekar mot en annan pekare som pekar mot ... som pekar mot din ammunition. Sen offsets också o.s.v. Exempel:
    https://www.ownedcore.com/forums/wor...-pointers.html
  • Simulera input. Jag har inte så bra koll men tror spel brukar använda sig av DirectInput och XInput (nyare). Dom som använder sig av DirectInput kan man simulera knapptryck till enkelt tror jag. XInput är väldigt krångligt.
Läsvärt:
https://en.wikipedia.org/wiki/Decompiler
https://en.wikipedia.org/wiki/Disassembler
https://en.wikipedia.org/wiki/Debugger

För Cheat Engine så finns det mycket på Youtube. För att simulera input så rekommenderar jag dig till att ta det senare för det är verkligen ett helvete

Mycket tack för ditt inlägg, låter som en lång väg att gå men angående börja med ett äldre 2D spel så kanske det är rätt väg att gå för att sätta in foten o börja någonstans. Krångligt om man ska plugga programmering samtidigt som man ska lära sig att decompila, känns som att man kommer koka över med information >,<
Citera
2022-03-08, 20:48
  #12
Medlem
Först måste du göra något.. ignorera alla som säger att det är svårt.
För att skapa cheats skulle jag rekommendera C++ som även jag använder. I C++ kan du fritt leka runt med minnes-adresser. Om du tycker att C++ är svårt kan du använda C#/Py, men då är det mest read/write som gäller.

Reverse engineering kräver inte assembly kundskap (så länge du håller dig till basic och inte ska leka runt med instructions, opcodes, etc.). Om din disassembler har en decompiler (IDA, Ghidra) så är det lungt. IDA är betalt men det finns lagom cracks online, Ghidra är gratis och finns på Github.

CheatEngine är ju också mycket bra, men de flesta spelen känner igen om du kopplar CE till deras process och det kan sluta med ban eller crash.

För tutorials sök på Assault Cube Hacking Tutorial, AC är ett spel utan anti-cheat där du kan hacka utan några problem. Såklart offline. Ett mycket litet och minimalt spel. Det var i just det spelet jag lärde mig om pointers, etc.

Annars skapa dina egna program i C++ och försök hacka dom, mycket lärosamt.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback