Jump to content

Search the Community

Showing results for tags 'general'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community Bulletin
    • News
  • Intersect Game Engine
    • Announcements & Quick Links
    • Community Guides
    • Questions & Answers
    • Event Discussion
    • Developer Discussion
    • Source Code and Plugins
  • Game Development
    • Games
    • Tutorials
    • Resources
    • Recruitment
    • Other Game Engines
  • General Category
    • General Discussion
    • Design & Creativity
    • Forum Games

Categories

  • Game Engines
  • Games
  • Game Creation Tools
  • Full Content Packs
  • Tilesets
  • Sprites
  • UI Elements
  • Animations
  • Items
  • Spell Icons
  • Sound Effects
  • Music
  • Misc
  • Intersect Translations

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Skype


Yahoo


Discord


Location


Interests


My Project


PSN


GamerTag


Steam ID


LoL Name


Twitch.tv

Found 13 results

  1. Computer security and hacking has always been an interest of mine. I am a game developer and I find game hacking very interesting. I thought I might as well share some knowledge with you guys. I will mostly be concentrating on game cheats and piracy. This is strictly for educational purposes. A lot of you are creating games, I think its helpful to know how users are going to be cheating or cracking any copyright protection you might have. For the first tutorial I will concentrate on cracking games. If you want to get into this field there is many websites that release small programs called "Crack Me's". These programs are typically small with a single button that requires the user to enter a serial key or register the program. While these programs are a lot smaller then a full AAA game, the core concept of how to break the protection is the same. Real programs will most likely have multiple layers of protection and checks for if they are being debugged (I might go into how to get past that in a later tutorial). Skills Needed (You do not need these but they will help). A general knowledge of programming and how software works in general will help Basics of reading assembly For this tutorial I will be using a crackme that dtm created from https://0x00sec.org/t/crackme-norepls-part-1/2974. Go ahead and download this program. So when you open the program you will notice that the save functionality is disabled. The window bar also shows that is in currently unregistered. Are goal is to unlock the full version of this program. If you go to "About -> Register" You will get the following window. This is normally where you would go to the website of the game or the program and buy the software to get the key to put in below. But of course we are not going to be buying any software. So lets look into how we are going to crack this. Software Needed https://x64dbg.com/#start This is what we call a dynamic debugger. It allows us to run a program while viewing the assembly and modifying it. Lets Crack it! So open up X32 dbg and you should see the following. (Make sure you dont open X64 dbg by accident). Go "File -> Open" and select the Crack Me that you downloaded. It should be called "NoREpls1.1.exe". Your screen should now look like this: What happening is that X32dbg has run your program and set a breakpoint in the start of the program. What you are seeing is the assembly of the running program. While this is interesting, it is a lot to digest and if like me you cannot fluidly read assembly code we probably want to narrow it down a bit instead of reading the entire program. So we want to keep running the program and not get interrupted anymore to do this press the "Execute till return" button. This will allow our program to run freely until we tell it to stop. Once you do this you should see the program has now launched, switch to the CrackMe and go back to the register menu. We want to see what happens when this button is pressed, as the program should run the logic to check if the serial key is valid. So go ahead and leave the serial key box blank and press "Register". You should now see the following dialog box. Looks like our serial number wasn't good. Which makes sense as we did not enter anything. Ok, so now we know the flow. You press the register button it (presumably) checks if the serial key is valid and then pops a message box telling you it is not. So now that we have this information we can go ahead and modify the program to accept our blank serial. We can now narrow down what we are looking for. We know that the check is done when you are in the Registration menu. We see a "Registration Failed" message. So lets search the assembly code to see if we can find that string anywhere, if we can this is probably the section of code that handles the registration. Go back in 32dbg and right click on the assembly window and search for "String References" Wait for the new screen to finish loading (Loading bar on bottom of window). We want to search for the string "Registration Failed". Do this by typing those words into the search field at the bottom. Once you have put in your search it should the main window to show you your results. Notice that we only have 1 result with "Registration Failed". That is great! We have found the section of assembly that shows that we had a bad serial. Once you see this window, double click on the "push norepl1..." text indicated by the 3rd red box above. You should now see this window. Notice that the assembly window is now showing you the code that has to do with the registration failing. This is great! We have narrowed down our search a bit. But this is for the failure case. I wonder if we can find the success case. Try scrolling up a bit to see if anything handles the success clause. Great! It looks like just a tiny bit up we see the text "Registration Successful". I have highlighted the logic that handles checking whether the serial key is valid or not. This is the point where knowing a bit of assembly is nice to know. It looks like if call something called "test al,al". This checks to see if the values match if they do not match it will set ZF to 1. You can see more about this command here: https://en.wikipedia.org/wiki/TEST_(x86_instruction) You can see in the examples that it checks a value and then runs a JE operation. http://unixwiz.net/techtips/x86-jumps.html This jumps to the value given if ZF is equal to 1. This means if the test call does not match the values correctly it will jump to the address "1014B9". I have highlighted the jump below. So if we look at this we see that if the two values passed to test do not match it runs the registration failed code. Interesting, we know that the test call is not going to pass because we do not know the correct serial key. There is many ways that we can make it go into the success case instead. We could switch the jump statement to jump to the address "001014BC" instead on failure. This is the success path. This way when we fail it will actually run the success code. A even simple way is reading the JE instruction. It says "Jump if equal". If we look at the same page we can see another command "Jump if not equal". This means that it will jump only if the serialize matches instead of when it doesnt match. This means that every case will pass except for the correct values. That sounds great! So lets change it. To do this we double click on the jump line and change the instruction from JZ to JNE then hit Ok. Hit cancel on the next box that pops up with the push value. You should now see that the instruction is changed. Great! So now when we click the Register box it should succeed with any value but the correct one. Lets try it out, go back to the CrackMe put any value in the input box and press "Register" Looks like it worked! It will now except any value for the serial and has unlocked the full version. You can now save files and use the full version functionality, Writing Exe So we have unlocked the full program, but we do not want to go through this process every time that we run it. We may also want to give the unlocked version to other people. To do this go to "Plugins -> Scylla" Once in this window, select the program that you are running then press the "Dump" button to save the exe. You can now write the new executable and replace the old one. You can now give out a version that will accept any serial! Homework Done with this and want to do more? Try making the application register on startup instead of going into the menu. Try playing with other ways to unlock the serial other then the JNE instruction. Try changing the messages or text in the program! Try a different crack me! The site linked has plenty.
  2. I need some help with the concept of limiting movement speed for multiplayer games. Current this is my server code (Java) case "2": player.movePlayer(Integer.parseInt(data[1])); sendPackets(packets.updatePlayerPos(player)); break; This receives the request for a player movement update and then sends the client the new movement coords. This is the client code (GDScript) func _input(event): #move up if Input.is_key_pressed(KEY_W): client.sendPacket(pDef.movePlayer(1)) #move left elif Input.is_key_pressed(KEY_A): client.sendPacket(pDef.movePlayer(2)) #move down elif Input.is_key_pressed(KEY_S): client.sendPacket(pDef.movePlayer(3)) #move right elif Input.is_key_pressed(KEY_D): client.sendPacket(pDef.movePlayer(4)) This chunk of code sends the server the request for a movement change when a button is down, of course this sends the server this packet as fast as your fps. I want to regulate speed on the server side. I cannot think of a way to accomplish this. Im not asking for exact code, just concepts. I want to be able to limit speed by an arbitrary value. Thank you for any help!
  3. This post is going to introduce people to the basics of getting started with hacking intersect. It will show you some of the tools needed, and how to put them to good use. This is just scraping the surface of what is possible. If you are interested in this topic you should try reading up on reverse engineering and c#. Tutorial: https://www.ascensiongamedev.com/resources/filehost/43ecff66a3fe2a66c781afc51f0f4c4e.pdf
  4. Is anyone good at XML and C#? Would anyone be able to help or create a program to read and compare xml documents?
  5. Hola a todos, he abierto hace unos días mi propia página web, http://khaikaa.com. En ella podréis encontrar algunos programas y juegos desarrollados por mí. Actualmente hay 3 disponibles: CPJutsu: Mi propio programa de edición de imágenes. Es una herramienta que sirve para cambiar las paletas de color de spritesheets de manera rápida y cómoda. HLA: Mi propio gestor de torneos de pokémon go. Administra una pequeña base de datos en la que podrás registrar jugadores, crear torneos, apuntar a los jugadores en los torneos y darle puntos a los participantes. Snake Worlds: El clásico juego de Snake hecho a mi manera. Iré subiendo más programas y mejorando los que ya están subidos a medida que vaya teniendo tiempo libre. Podéis descargarlos y usarlos cuando queráis. Un saludo ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Hi everybody, I just made my own website, http://khaikaa.com. You'll find some programs and games developed by me there. There are 3 at the momment: CPJutsu: My own picture edition program. It's a tool that easily changes the color palette of a spritesheet. HLA: My own pokemon go tournament manager. Admin a little database where you can register players, create tournaments, sign up players to the tournaments and give them points. Snake Worlds: My own version of the classic Snake game. I'll be uploading more programs and improving the ones I've already posted there. You can download and use them whenever you want. Regards
  6. does anyone know any free software for building mobile Apps. i want to make a small app for my motorbike club which allows members to log on and purchase an entry to be able to attend an event. which will then send their details to my database. Thanks in advance for any info.
  7. http://community.monogame.net/t/monogame-inside-your-web-browser/10918
  8. Programmers rule the world. We're dangerous. We kill people. The world depends on us in ways it doesn't yet understand, and in ways we don't yet understand. These are a few of the talking points by Robert Martin (aka Uncle Bob) in the last few minutes of his talk titled "The Future of Programming". If you are interested in programming, or even if you aren't I highly recommend watching this. Share your thoughts below
  9. So I am currently trying to design the structures for entities in my game and have run into a little snag with how it calculates the max vitals for the vitals structure. The snag is that the formula needs EntityStats but EntityVitals does not have access to that, and I would prefer to keep it that way so I am not tossing references around the place. Here is my project structure for what I am working with. Data Entity - The entity object. Logic LogicEntities - The static class where my GetEntityMaxVital function will be. Strcutures EntityStat - A single entity stat structure. EntityStats - The structure that defines entity stats. EntityVital - A single entity vital structure. EntityVitals - The structure that defines entity vitals. Any help would be greatly appreciated. -XerShade
  10. Ok so basically what I want to know is, let's say that when Intersect goes open source I clone it and make a bunch of changes. When Intersect gets updated is it possible for me to get the update while also keeping the changes that I have made on my end? If so how do conflicts get resolved in that case? Does it only depend on how smart and modular the code I've added is? I don't need some big explanation on how git works in general, just this piece of information if possible Thanks in advance!
  11. So I have the game loop for my game coded here. I've been trying to figure out how to make Update() not get lagged out when Draw() takes it's time and slows the game out. Game Loops have always been a weak point so any help would be greatly appreciated. Source Code: https://gitlab.com/XerShade/Esmiylara.Online/blob/master/source/Esmiylara.Online.Client/Engine.cs using Esmiylara.Online.Client.Components; using System; using System.Threading; using System.Windows.Forms; using Timer = Esmiylara.Online.Client.Components.Timer; namespace Esmiylara.Online.Client { /// <summary> /// Esmiylara Online game engine. /// </summary> public partial class Engine { /// <summary> /// The game loop's thread. /// </summary> private static Thread LoopThread; /// <summary> /// Tells the engine if it should continue looping. /// </summary> private static bool DoLoop; /// <summary> /// [Hook] GameLoopInitialize, called when the game loop is initialized. /// </summary> public static event EventHandler<EventArgs> GameLoopInitialize { add { GameLoop.GameLoopInitialize += value; } remove { GameLoop.GameLoopInitialize -= value; } } /// <summary> /// [Hook] GameLoopStart, called when the game loop is started. /// </summary> public static event EventHandler<EventArgs> GameLoopStart { add { GameLoop.GameLoopStart += value; } remove { GameLoop.GameLoopStart -= value; } } /// <summary> /// [Hook] GameLoopUpdate, called when the game loop is updated. /// </summary> public static event EventHandler<EventArgs> GameLoopUpdate { add { GameLoop.GameLoopUpdate += value; } remove { GameLoop.GameLoopUpdate -= value; } } /// <summary> /// [Hook] GameLoopDraw, called when the game loop is drawn. /// </summary> public static event EventHandler<EventArgs> GameLoopDraw { add { GameLoop.GameLoopDraw += value; } remove { GameLoop.GameLoopDraw -= value; } } /// <summary> /// [Hook] GameLoopStop, called when the game loop is stopped. /// </summary> public static event EventHandler<EventArgs> GameLoopStop { add { GameLoop.GameLoopStop += value; } remove { GameLoop.GameLoopStop -= value; } } /// <summary> /// [Hook] GameLoopDispose, called when the game loop is disposed. /// </summary> public static event EventHandler<EventArgs> GameLoopDispose { add { GameLoop.GameLoopDispose += value; } remove { GameLoop.GameLoopDispose -= value; } } /// <summary> /// Runs the game engine. /// </summary> public static void Run() { // Call the loop method. Loop(); } /// <summary> /// Stops the game engine. /// </summary> public static void Stop() { // Tell the engine to stop looping. DoLoop = false; } /// <summary> /// Aborts the game engine thread. /// </summary> public static void Abort() { // Do the thing! LoopThread.Abort(); } /// <summary> /// The game engine loop function, do NOT call this directly. EVER. /// </summary> private static void Loop() { // Construct a new thread and assign the game code. LoopThread = new Thread(() => { // Tell the engine to loop. DoLoop = true; // Construct the game loop's variables. GameTime tick = new GameTime(); Timer tickUpdate = new Timer(1000 / 30); Timer tickDraw = new Timer(1000 / 30); // Initialize the game. GameLoop.Initialize(); // Start the game. GameLoop.Start(); // The game loop, simple for now. while (DoLoop) { // Update the GameTime object. tick.Update(); // Check to see if we need to update the game. if (tickUpdate.CheckInterval(tick.Value)) { // Update the game, do NOT draw any part of the game here. GameLoop.Update(tick); // Update the timer. tickUpdate.Update(tick.Value); } // Check to see if we need to draw the game. if (tickDraw.CheckInterval(tick.Value)) { // Draw the game, do NOT draw any part of the game here. GameLoop.Draw(tick); // Draw the timer. tickDraw.Update(tick.Value); } // Update the message pump. Application.DoEvents(); } // Stop the game. GameLoop.Stop(); // Dispose the game. GameLoop.Dispose(); }); LoopThread.Start(); } } }
  12. So, I made a tile-based system, but it has a bunch of bugs, all due to timing, like if you mash directions or some other funk stuff. I figured maybe you guys could help me understand the logic for how I should be doing it. Right now, these are the steps that my code goes through: If moving, go forward a pixel amount If no longer moving, find the next tile in the player's direction Stop on the next tile, which is the player's destination It seems like it should be that simple, but this is the first time I'm trying to make tile-based movement. Right now, it's pixel-based movement until you stop, at which time it will calculate your destination tile. Make sense? How would I do this properly?
  13. I'm wanting to get a general idea of what it would take to convert from using full tilesheets to single tiles. I figure something like this would allow for organization of the tiles, instead of several dozen sheets with some having the same tiles on them. This is probably not going to happen, but I am exploring all of my option before moving on.
×
×
  • Create New...