Giter Site home page Giter Site logo

proxy-dll-64's Introduction

Proxy DLL 64

Proxy DLL's with ASI loader for 64-bit games. For 32-bit games, click here.

See Releases for binaries.

About this repository

A DLL proxy acts like a "middle man" between the game and the original Windows DLL. The goal is to be able to load custom code into a game's memory by loading additional DLL files renamed as *.asi (dubbed as 'ASI plugin').

A little backstory about "ASI"

Grand Theft Auto III was released for PC in 2002.
GTAForums (one of the biggest GTA communities at the time, and probably the biggest today) hosts discussions about GTA hacking and modding, and back then people found an exploit which allowed custom user-made DLL's to be loaded by the game without the use of injectors if they were named with ASI extension.
It turned out that this was due to how the Miles Sound System middleware (Mss32.dll) attempts to load "ASI codecs" by looking for files ending with .asi in the game's executable folder.
For the sequels, I reckon that Vice City retained the exploit, but not San Andreas. For GTASA, dedicated ASI loaders were made in form of proxy DLL's.
Believe it or not, I contacted the creator of Miles Sound System, John Miles, via e-mail only to ask him what "ASI" stood for, which he politely replied that it's supposed to be "Audio Stream Interface".

The ASI loader

I implemented here the same scheme I used with the Binkw32 proxy DLL's for Mass Effect 1, 2 and 3.
The proxy DLL will attempt to load ASI plugins from a subfolder "ASI", and if it doesn't find anything there, then it'll load from the current folder.
The ASI loading function in this repo and on Binkw32's is based on XLiveless made by Stanislav "listener" Golovin. There's no secret: it performs a file search for "*.asi" and attempts to load what it founds.
The loading function has been tweaked by me so it looks for plugins in a given subfolder, relative to where the game's executable is, while counting what has been already loaded. This is intentionally done to avoid loading plugins with the same name from different places. See Erik-JS/masseffect-binkw32#12.

How things work

  • Place fake DLL in the game's exe folder;
  • Game loads fake DLL;
  • Fake DLL loads real DLL from System folder;
  • Fake DLL writes a log to fakedll_proxy64.log to current user's Documents folder;
  • Fake DLL loads ASI files from ASI subfolder (or the game's executable folder).

Games with Denuvo

As far as I can tell, Denuvo doesn't prevent hacking and modding. Game devs may employ anti-cheat and/or anti-modding measures which aren't related to Denuvo.
In any event, I cannot guarantee that these proxy DLL's will work with every game you own, regardless of having Denuvo or not.


Software used for writing and compiling:
Code::Blocks
TDM-GCC

proxy-dll-64's People

Contributors

erik-js avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

peterg75 killvxk

proxy-dll-64's Issues

got error wen compile this source

hi,
i try to compile this source with the last TDM-GCC version and got many error!
wat the version of TDM-GCC to compile this source?

||=== Build: Release in winmm (compiler: GNU GCC Compiler) ===|
C:\Users\ZABOUR\Desktop\proxy-dll-64-r1\sharedcode\Logging.h|4|warning: "WINVER" redefined|
C:\TDM-GCC-64\x86_64-w64-mingw32\include\sdkddkver.h|181|note: this is the location of the previous definition|
C:\Users\ZABOUR\Desktop\proxy-dll-64-r1\sharedcode\Logging.h|5|warning: "_WIN32_WINNT" redefined|
C:\Users\ZABOUR\Desktop\proxy-dll-64-r1\sharedcode\Logging.h|4|warning: "WINVER" redefined|
C:\TDM-GCC-64\x86_64-w64-mingw32\include\sdkddkver.h|181|note: this is the location of the previous definition|
C:\Users\ZABOUR\Desktop\proxy-dll-64-r1\sharedcode\Logging.h|5|warning: "_WIN32_WINNT" redefined|
C:\TDM-GCC-64\x86_64-w64-mingw32\include_mingw.h|233|note: this is the location of the previous definition|
C:\TDM-GCC-64\x86_64-w64-mingw32\include_mingw.h|233|note: this is the location of the previous definition|
C:\Users\ZABOUR\Desktop\proxy-dll-64-r1\sharedcode\Logging.cpp||In function 'void logStart(const char*)':|
C:\Users\ZABOUR\Desktop\proxy-dll-64-r1\sharedcode\Logging.cpp|19|warning: this 'if' clause does not guard... [-Wmisleading-indentation]|
C:\Users\ZABOUR\Desktop\proxy-dll-64-r1\sharedcode\Logging.cpp|21|note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'|
relocation truncated to fit||R_X86_64_32S against .bss'| relocation truncated to fit||R_X86_64_32S against .bss'|
relocation truncated to fit||R_X86_64_32S against .bss'| relocation truncated to fit||R_X86_64_32S against .bss'|
relocation truncated to fit||R_X86_64_32S against .bss'| relocation truncated to fit||R_X86_64_32S against .bss'|
relocation truncated to fit||R_X86_64_32S against .bss'| relocation truncated to fit||R_X86_64_32S against .bss'|
relocation truncated to fit||R_X86_64_32S against .bss'| relocation truncated to fit||R_X86_64_32S against .bss'|
obj\Release\winmm\main.o:main.cpp|| additional relocation overflows omitted from the output|
||error: ld returned 1 exit status|
||=== Build failed: 12 error(s), 5 warning(s) (0 minute(s), 1 second(s)) ===|

d3d12

awesome job you do, pls Can you add d3d12 and binkw64, got game run only on it โค (^_^)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.