Giter VIP home page Giter VIP logo

amdfriend's Introduction

AMDFriend

Note: All of this is experimental software and it should only be referred to for the purpose of testing.

The issue section has been disabled because people started reporting issues with single apps and libraries, and not with AMDFriend. This is EXPERIMENTAL SOFTWARE and NO SUPPORT FOR SPECIFIC LIBRARIES WAS EVER GIVEN. Again, you are on your own.

If there are issues SPECIFIC to AMDFriend I am sure y'all will know how to reach me eventually.

Introduction

This project stems directly from the excellent guide made by tomnic over at the MacOS86 forums.

Since userland patching is not possible with Lilu on Big Sur+, manual patching of libraries of certain programs is needed to get them to work reliably on AMD hackintoshes.

Tomnic did outline some general bit patterns to search for, but then he admitted that a crude find and replace wouldn't be viable. This project uses regular expressions to find those patterns and patch them.

Usage

Only use this if you know what you're doing. Also, this is incomplete software.

From the Releases section

Just grab the latest binary from the Releases section, mark it as executable, clear XAttrs as I cannot sign it, and use it. You can put it in your PATH (usually /usr/local/bin) if you want, for easy access.

As a Node module installed globally on the system

You will need:

  • Node.js: brew install nodejs
  • Yarn (optional, used for contributions): brew install yarn

Install (and update) AMDFriend on your system with this command:

npm install -g amdfriend

Or, if you've installed yarn

yarn global add amdfriend

Use it with:

amdfriend "/path/to/your/library.dylib"

Observed quirks

  • Discord's Krisp module will only work if SIP is disabled. Reason is that the system usually won't load libraries that are not signed with the same key as the main application.
  • Only patch libtbb and libtbbmalloc in Autocad 2024 -- there's a false positive inside one of the other libraries that, if patched, would crash the program on launch.

Command line arguments

Argument Type Default value Description
--in-place Boolean false Directly patch the library, as opposed to creating a patched library with .patched appended to the file name.
--backup Boolean false Only works in conjunction with --in-place; it backs up the original library by copying it and appending .bak on its extension.
--sign Boolean false Automatically invoke codesign on patched libraries.
--clear-xa Boolean true Automatically invoke xattr -c on patched libraries.
--dry-run Boolean false Do all checking and patching, but DO NOT write anything to disk. This is useful to test performance and to scan for matches in a given library.
--directories Array Not set Scan directories alongside files. It will search for any file with no extension and with extension .dylib, as they are the common ones to patch.
--jobs Number N. of threads available The number of jobs that will be spawned to process the libraries.

Contributing

If you want to contribute to this project, clone it to your computer!

git clone https://github.com/NyaomiDEV/AMDFriend
cd AMDFriend
yarn
yarn test "/path/to/your/library.dylib"

Tips and tricks

Scan for patchable files in a directory:

amdfriend --dry-run --directories /path/to/dir /path/to/another/dir | grep "Routines found"

Scan for patchable files and patch them (NOT recommended, might use sudo in front of the command if patching directories not owned by the current user):

amdfriend --in-place --backup --sign --directories /path/to/dir /path/to/another/dir

License

Refer to the LICENSE file.

Credits

Tomnic, Tomnic and Tomnic again. You don't know him? He's this guy.

amdfriend's People

Contributors

nyaomidev avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar

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.