It has been a while since I last played EVE. Sometime in 2012, after years of playing the game and having experienced almost every aspect of it I got bored of it. On one side, every aspect of the game except PVP had grown stale, on the other I had gotten caught up in the middle of a SOV grind in Impass with my alliance. I couldn’t even tell you who we were fighting back then but every night was filed with an unending amount of IHUBS, cynojammers, POSes and other boring stuff that needed shooting at.
So I ended up making client hacks and engaging in some activities that I shouldn’t have which ended up in my accounts being banned. Fast forward to February 2014. After seeing all the cool changes that CCP has implemented in the last two years since I’ve been out, I decided to come back to the game and see what it has to offer. The problem? It is EVE Online after all, so it is going to take months before I can head out there and do the things I want to do. So that means I’m stuck in the station watching my skill queues empty up.
If you read part 2 of this series, you have yourself a bunch of indices and vertices for 3d geometry in a game. The question now is, how are you going to do anything with them? That’s where this final part of the tutorial comes in. Here we turn the geometry vertex data into a usable format- Wavefront OBJ, which is a format that is readily understood by most 3D modeling software.
In this part we’ll talk about what needs to be done under the hood to implement a directx9 model ripper. To implement 3d geometry I used hooking. I won’t get into the details of how to hook directx calls here since that subject has been more than covered online. You should be familiar with that subject before continuing this tutorial.
If you’re like me you’ve seen games with really cool looking models and wondered how they were put together. You might have searched online and seen a couple of tools that allowed you to get the models you were interested in. And once you did that you couldn’t help but wonder how the process of ripping a 3D model from a game goes down.
In this tutorial I’ll show you what it takes to code something like this, and send you on your way to experiment with the world of directx9.
I’ll be splitting this tutorial into parts since otherwise it would get pretty long. This first part will cover the concepts involved so that you can have the understanding required to implement a 3d ripper for directx9.
While there are tools out there that do this sort of thing, I couldn’t find the source code for any of them. So I put together this library as a way of knowing how it goes down. I gotta say 3d graphics is not my thing in the least, so putting this together was both challenging and fun.
To use the library, run your desired game, open up the cmd line, go to your exectuable directory and type in: Injector.exe “EXE Name” d3d9.dll PrimCount NumVerts.
Injector.exe “Slender – The Eight Pages.exe” d3d9.dll 2136 1469
The above command will pull the geometry for one of the trees in the Slender forest and dump into a file called model.obj in your Slender executable folder.
If you do not know how to get the primcounts and vertnums for the geometry you want check this other tool out.
The resulting file is in obj format. This is probably the simplest format out there for representing 3d geometry, and most 3d modeling software is able to recognize it.
Why do we tell stories? Is it genetics? Is it evolution? Is it simply our preffered way to waste time born in an era when technology was non-existent? The Storytelling Animal: How Stories Make Us Human tries to answer these questions with very compelling arguments.
In The Storytelling Animal: How Stories Make Us Human Jonathan Gottschall shows you how the world of stories is fundamental to the human condition. Through the chapters Gottschall takes you through many current theories of why we as humans have developed, and kept, the art of storytelling. The book also explores the science behind storytelling, and some of the reasons why stories have a magical pull on our attention and decision-making process.
The book is written in a very active and readable tone. Gottschall himself, taking his own example, makes use of varied stories frequently throughout the book. Through his use of powerful storytelling the reader gets a first-hand look at how a good narrative can immerse us and capture us.
All in all The Storytelling Animal: How Stories Make Us Human is a delightful reading experience, filled with insight into the many different types of storytelling, and why storytelling is, hands-down, the way to go when attempting to ingrain memorable experiences in the minds of other human beings.
For anyone looking to explore the importance of storytelling, or anyone looking to understand why the world of make-believe has such a great allure, The Storytelling Animal: How Stories Make Us Human is certainly the book to read. I give this book an 8/10.
This tool allows you to rip textures from D3D9 games. It grabs the textures by hooking device->SetTexture method and dumps it to a file inside your game’s path in a folder called “Textures.” The textures are generated in BMP format and are named in non-descript names (by address in memory at the time SetTexture is called).
D3DWindower allows you to force DirectX applications into windowed mode. This is implemented by hooking D3DDevice->Reset and changing the present parameters structure.
Inside the D3DWindowerClient bin\ folder run D3DWindowerClient.exe “YOUREXENAME.exe” d3d9.dll Width Height
The width and height parameters should match the application’s current resolution so that the application can display properly in windowed mode.
Here are some chams for the Slenderman – The Eight Pages that I pulled in about 5 minutes while testing my d3dlogger.
The captions under the picture as well as the file names denote primcount and vertcount. 300×200.bmp means 300 primcount, 200 vertcount.
Quick post here gents. If you’ve been looking to patch a binary you can load it up in IDA, make your changes, commit your changes, make a diff and use a patcher to apply the patch to the original binary. If you’re tinkering with a project in olly and are making modifications to the binary continuously this can get old fast. So go grab yourself OllyDump and you can automatically patch your memory changes by generating a fresh new exe with it.