Comments (7)
Yes, Apple obfuscate names of the ADI functions. These functions are 1:1 equivalent to AKADIProxy functions on iOS, and they are quite consistent on the naming, since these function names does not change neither across versions nor across different Apple apps. On Android, you can call with their obfuscate name even if an alias would be preferable for readability.
libstoreservicescore automatically tries to load libCoreADI from the standard paths when you initialize it. You can specify a custom path if you want libCoreADI to be stored somewhere else. If it's already loaded in the memory it will be able to use it without complaining, so I load it to be sure before loading libstoreservicescore.
On Android and arm devices you can use the Apple TV app's libCoreADI. It directly exports the functions with the same mangled names, reducing even further the size required on the disk.
from provision.
Something like this would work as a header, right?:
// libstoreservicescore.h
// Obfuscated symbols
#define LoadLibraryWithPath kq56gsgHG6
#define SetAndroidID Sph98paBcz
#define SetProvisioningPath nf92ngaK92
#define ProvisioningErase p435tmhbla
#define Synchronize tn46gtiuhw
#define ProvisioningDestroy fy34trz2st
#define ProvisioningEnd uv5t6nhkui
#define ProvisioningStart rsegvyrt87
#define GetLoginCode aslgmuibau
#define Dispose jk24uiwqrg
#define OTPRequest qi864985u0
#define SetIDMSRouting ksbafgljkb
#define GetIDMSRouting madsvsfvjk
// Android-specific symbols
int LoadLibraryWithPath(const char*);
int SetAndroidID(const char*, uint);
int SetProvisioningPath(const char*);
// ADI symbols
int ProvisioningErase(ulong);
int Synchronize(uint, ubyte*, uint, ubyte**, uint*, ubyte**, uint*);
int ProvisioningDestroy(uint);
int ProvisioningEnd(uint, ubyte*, uint, ubyte*, uint);
int ProvisioningStart(ulong, ubyte*, uint, ubyte**, uint*, uint*);
int GetLoginCode(ulong);
int Dispose(void*);
int OTPRequest(ulong, ubyte**, uint*, ubyte**, uint*);
int SetIDMSRouting(ulong, ulong);
int GetIDMSRouting(ulong*, ulong);
from provision.
Yes, here is one with params names and types corrected:
// libstoreservicescore.h
// Obfuscated symbols
#define LoadLibraryWithPath kq56gsgHG6
#define SetAndroidID Sph98paBcz
#define SetProvisioningPath nf92ngaK92
#define ProvisioningErase p435tmhbla
#define Synchronize tn46gtiuhw
#define ProvisioningDestroy fy34trz2st
#define ProvisioningEnd uv5t6nhkui
#define ProvisioningStart rsegvyrt87
#define GetLoginCode aslgmuibau
#define Dispose jk24uiwqrg
#define OTPRequest qi864985u0
#define SetIDMSRouting ksbafgljkb
#define GetIDMSRouting madsvsfvjk
// Android-specific symbols
int LoadLibraryWithPath(const char *libraryPath);
int SetAndroidID(const char *identifier, unsigned int length);
int SetProvisioningPath(const char *provisioningPath);
// ADI symbols
int ProvisioningErase(unsigned long long dsId);
int Synchronize(unsigned long long dsId, const char *SIM, unsigned int SIMLength, char **outMID, unsigned int *outMIDLength, char **outSRM, unsigned int *outSRMLength);
int ProvisioningDestroy(unsigned int session);
int ProvisioningEnd(unsigned int session, const char *PTM, unsigned int PTMLength, const char *TK, unsigned int TKLength);
int ProvisioningStart(unsigned long long dsId, const char *SPIM, unsigned int SPIMLength, char **CPIM, unsigned int *CPIMLength, unsigned int *session);
int GetLoginCode(unsigned long long dsId);
int Dispose(void *data);
int OTPRequest(unsigned long long dsId, char **outMID, unsigned int *outMIDSize, char **outOTP, unsigned int *outOTPSize);
int SetIDMSRouting(unsigned long long routingInfo, unsigned long long dsId);
int GetIDMSRouting(unsigned long long *routingInfo, unsigned long long dsId);
from provision.
Thanks! I totally forgot about adding names lol, I just put your code in a comment and had Copilot fill it in.
from provision.
One thing I'm noticing, is that you have a function called int GetLoginCode(unsigned long long dsId);
, wheras the original has + (int)isMachineProvisioned:(unsigned long long)arg1;
. I'm assuming they're different? or are they the same thing
from provision.
They are the same function, but ADIGetLoginCode is its internal name in the C API while isMachineProvisioned is its name in Objective-C.
from provision.
If you need more assistance you can contact me on Discord Dadoum#9690
from provision.
Related Issues (20)
- May I ask if there is a corresponding function for the export name Sph98paBcz on iOS HOT 23
- Anisette_server crashes on Apple Silicon Linux - loading openssl: unknown version for init HOT 4
- loading openssl: unknown version for init HOT 1
- Build failed HOT 7
- Unable to run on Raspberry Pi5 (armv7) HOT 2
- Unable to run o Raspberry Pi 4 Model B Rev 1.5 (ARMv8) HOT 6
- docker: Couldn't resolve host name HOT 1
- anisette-server seg fault on armv7 HOT 2
- Docker time error HOT 6
- Raspbian 64-bit Anisette Server Execution Error HOT 7
- Unable To Bind Websocket HOT 3
- An error occurred. Thereโs an error above. Please fix it to continue. HOT 5
- Segmentation Fault Raspberry PI Model 2 B HOT 8
- Hg
- Sidestore
- docker volume seem to not work, maybe due to permissions HOT 1
- it just restarts and lags my server HOT 2
- Render not allowing the creation of the service HOT 7
- Ii
- Provision doesn't work on Apple Silicon macs (bus error) HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from provision.