01-22-2011, 04:41 PM
(This post was last modified: 01-29-2011, 01:01 PM by blow_fly98.)
The release is here! Hoorayyyyy...
Download >>here<<.
Don't know how to use it? Check >>here<<.
Download >>here<<.
Don't know how to use it? Check >>here<<.
Screenshot of RC1 (Click to View)
2nd Post (Click to View)
BlowFly and I are working on a real time data changer. It will allow you
edit data while lf2 is running. Since we are frequently updating the source code it'd be pointless to keep uploading rars and stuff. Instead we created a google code project here:
http://code.google.com/p/lf2-realtime-dcer/
Everyone is free to download it and compile it as they wish if you know how to ~ blow_fly98. As soon as we have a release which lets you overwrite lf2 frames we'll release a compiled release :P.
Teaser screenshot FTW:
edit data while lf2 is running. Since we are frequently updating the source code it'd be pointless to keep uploading rars and stuff. Instead we created a google code project here:
http://code.google.com/p/lf2-realtime-dcer/
Everyone is free to download it and compile it as they wish if you know how to ~ blow_fly98. As soon as we have a release which lets you overwrite lf2 frames we'll release a compiled release :P.
Teaser screenshot FTW:
Original Post (Click to View)
So today I started working on a real time datachanger. Basically a datachanger which lets you change data in an already loaded game. My motivation quickly died after I saw that it is quite feasible but would require lots of planning and lots of tedious work and code :(.
So here is what I have so far.
It's mostly hacked together, but that means it should be easy to understand :p. Basically there is a struct, and it is read into memory :).
The struct is based on this: https://spreadsheets.google.com/ccc?key=...li=1#gid=2
I got lazy so I didn't finish implementing the struct. That spreadsheet becomes useless when it comes to bdys' and itr's since you can have multiple ones per frame, and it's all very weird. If anyone decides to continue this project, I'll help with that bit :).
Basically I'm just putting it out there incase someone is trying to learn C and wants a "fun" project to do with win32 api's. I can see it becoming super annoying though and the code would need to be re-structured and stuff...
Enjoy :). If you have any questions post here, or PM me.
I've attached my "project" :p. It uses MinGW to compile so yeah, you'll need that install if you are going to use my way of compiling it. It includes a compiled version if you like running things without understanding what they do :D.
So here is what I have so far.
C-Code:
#include <stdio.h> #include <windows.h> struct sOpoint { int x; int y; int action; int dvx; int dvy; int dvz; int oid; int facing; }; struct sFrame { int exists; int pic; int state; int wait; int next; int dvx; int dvy; int dvz; int unknown1; int hit_a; int hit_d; int hit_j; int hit_Fa; int hit_Ua; int hit_Da; int hit_Fj; int hit_Uj; int hit_Dj; int hit_ja; int mp; int centerx; int centery; int opoint_exists; struct sOpoint opoint; int unknown2; int unknown3; }; main() { HWND hWnd; HANDLE hGame; DWORD dwProcessId; DWORD temp; struct sFrame frame1; int frameNum; hWnd = FindWindow(0, "Little Fighter 2"); if (!hWnd) { printf("cant find window\n"); return; } GetWindowThreadProcessId(hWnd, &dwProcessId); // Get Process id hGame = OpenProcess(PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, dwProcessId); // Open Process with id if (!hGame) { printf("cant open process\n"); return; } // Reading Example frameNum = 0; ReadProcessMemory(hGame, (LPVOID) 0x458C9C, &temp, sizeof(temp), NULL); //loading character used by player 3 temp += 0x368; ReadProcessMemory(hGame, (LPVOID) temp, &temp, sizeof(temp), NULL); temp += 0x7A4 + (frameNum * 0x178); ReadProcessMemory(hGame, (LPVOID) temp, &frame1, sizeof(frame1), NULL); //should be one long printf statement but to much hassle for simple testing //printf("name: %s ",frame1.fname); printf("pic: %d ",frame1.pic); printf("state: %d ",frame1.state); printf("wait: %d ",frame1.wait); printf("next: %d ",frame1.next); printf("dvx: %d ",frame1.dvx); printf("dvy: %d ",frame1.dvy); printf("dvz: %d ",frame1.dvz); printf("centerx: %d ",frame1.centerx); printf("centery: %d ",frame1.centery); printf("hit_a: %d ",frame1.hit_a); printf("hit_d: %d ",frame1.hit_d); printf("hit_j: %d ",frame1.hit_j); printf("hit_Fa: %d ",frame1.hit_Fa); printf("hit_Ua: %d ",frame1.hit_Ua); printf("hit_Da: %d ",frame1.hit_Da); printf("hit_Fj: %d ",frame1.hit_Fj); printf("hit_Uj: %d ",frame1.hit_Uj); printf("hit_Dj: %d ",frame1.hit_Dj); printf("hit_ja: %d ",frame1.hit_ja); printf("mp: %d ",frame1.mp); //Writing a frame example struct sFrame myFrame; myFrame.exists = 1; myFrame.pic = 5; myFrame.wait = 3; myFrame.next = 2; myFrame.centerx = 38; myFrame.centery = 179; frameNum = 6; ReadProcessMemory(hGame, (LPVOID) 0x458C9C, &temp, sizeof(temp), NULL); temp += 0x368; ReadProcessMemory(hGame, (LPVOID) temp, &temp, sizeof(temp), NULL); temp += 0x7A4 + (frameNum * 0x178); WriteProcessMemory(hGame, (LPVOID) temp, &frame1, sizeof(frame1), NULL); } |
It's mostly hacked together, but that means it should be easy to understand :p. Basically there is a struct, and it is read into memory :).
The struct is based on this: https://spreadsheets.google.com/ccc?key=...li=1#gid=2
I got lazy so I didn't finish implementing the struct. That spreadsheet becomes useless when it comes to bdys' and itr's since you can have multiple ones per frame, and it's all very weird. If anyone decides to continue this project, I'll help with that bit :).
Basically I'm just putting it out there incase someone is trying to learn C and wants a "fun" project to do with win32 api's. I can see it becoming super annoying though and the code would need to be re-structured and stuff...
Enjoy :). If you have any questions post here, or PM me.
I've attached my "project" :p. It uses MinGW to compile so yeah, you'll need that install if you are going to use my way of compiling it. It includes a compiled version if you like running things without understanding what they do :D.
10 ʏᴇᴀʀs sɪɴᴄᴇ ɪʀᴄ ɢᴏᴏᴅ.ɪ ᴡᴀʟᴋ ᴛʜʀᴏᴜɢʜ ᴛʜᴇ ᴇᴍᴘᴛʏ sᴛʀᴇᴇᴛs ᴛʀʏɪɴɢ ᴛᴏ ᴛʜɪɴᴋ ᴏғ sᴏᴍᴇᴛʜɪɴɢ ᴇʟsᴇ ʙᴜᴛ ᴍʏ ᴘᴀᴛʜ ᴀʟᴡᴀʏs ʟᴇᴀᴅs ᴛᴏ ᴛʜᴇ ɪʀᴄ. ɪ sᴛᴀʀᴇ ᴀᴛ ᴛʜᴇ sᴄʀᴇᴇɴ ғᴏʀ ʜᴏᴜʀs ᴀɴᴅ ᴛʀʏ ᴛᴏ sᴜᴍᴍᴏɴ ᴛʜᴇ ɢᴏᴏᴅ ɪʀᴄ. ɪ ᴡᴀᴛᴄʜ ᴏᴛʜᴇʀ ɪʀᴄ ᴄʜᴀɴɴᴇʟs ʙᴜᴛ ɪᴛ ɪs ɴᴏ ɢᴏᴏᴅ. ɪ ᴘᴇsᴛᴇʀ ᴢᴏʀᴛ ᴀɴᴅ ᴛʀʏ ᴛᴏ ʀᴇsɪsᴛ ʜɪs sᴇxɪɴᴇss ʙᴜᴛ ɪᴛ ɪs ᴀʟʟ ᴍᴇᴀɴɪɴɢʟᴇss. ᴛʜᴇ ᴇɴᴅ ɪs ɴᴇᴀʀ.ɪ ᴛʜᴇɴ ᴜsᴜᴀʟʟʏ ʀᴇᴀᴅ sᴏᴍᴇ ᴏʟᴅ ɪʀᴄ ʟᴏɢs ᴀɴᴅ ᴄʀʏ ᴍʏsᴇʟғ ᴛᴏ sʟᴇᴇᴘ.