This commit introduces a complete architectural refactoring of the Kotlin-based interception logic, based on the source of 1. https://github.com/5ec1cff/TrickyStore 2. https://github.com/beakthoven/TrickyStoreOSS The primary purpose of this code is to intercept binder transactions to the Android Keystore and KeyMint services. The overall workflow operates in conjunction with a native library (injected via ptrace). The native library hooks the binder's `transact` function and forwards pre- and post-transaction events to the Kotlin side. This Kotlin code contains all the high-level logic for parsing parameters, patching certificates, and generating simulated keys. The codebase is now organized into a clear, package-based architecture: - attestation: Manages the creation and patching of ASN.1 attestation data structures. - config: Handles loading and observing configuration files from disk. - interception: Contains the core binder interception framework and its specific implementations for legacy Keystore (Android Q/R) and modern KeyMint/Keystore2 (Android S+). - logging: Provides a centralized and consistent logging utility. - pki: Manages Public Key Infrastructure, including certificate generation, parsing of key store XML files, and cryptographic helpers. - util: Contains Android-specific utility functions for device properties. This refactoring focuses on establishing a robust and extensible architecture. The fine-tuning of the interception logic itself, especially for corner cases in key generation and patching, is currently under redesign and will be further refined in subsequent commits.
22 lines
615 B
Java
22 lines
615 B
Java
package android.content.pm;
|
|
|
|
import android.os.IBinder;
|
|
|
|
public interface IPackageManager {
|
|
String[] getPackagesForUid(int uid);
|
|
|
|
PackageInfo getPackageInfo(String packageName, long flags, int userId);
|
|
|
|
PackageInfo getPackageInfo(String packageName, int flags, int userId);
|
|
|
|
ParceledListSlice<PackageInfo> getInstalledPackages(int flags, int userId);
|
|
|
|
ParceledListSlice<PackageInfo> getInstalledPackages(long flags, int userId);
|
|
|
|
class Stub {
|
|
public static IPackageManager asInterface(IBinder binder) {
|
|
throw new UnsupportedOperationException("STUB!");
|
|
}
|
|
}
|
|
}
|