mirror of
https://github.com/LSPosed/LSPlt.git
synced 2025-05-06 13:16:35 +08:00
Add pid param to MapInfo::Scan (#4)
This commit is contained in:
parent
f8add9db06
commit
f6e06cddd2
46
.github/workflows/build.yml
vendored
46
.github/workflows/build.yml
vendored
@ -19,25 +19,16 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out
|
- name: Check out
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v3
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
cache: 'gradle'
|
cache: 'gradle'
|
||||||
- name: Cache Gradle Build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.gradle/caches/build-cache-*
|
|
||||||
~/.gradle/buildOutputCleanup/cache.properties
|
|
||||||
key: gradle-builds-core-${{ github.sha }}
|
|
||||||
restore-keys: |
|
|
||||||
gradle-builds-${{ runner.os }}
|
|
||||||
- name: ccache
|
- name: ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
@ -55,7 +46,7 @@ jobs:
|
|||||||
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.maven_pgp_signingKey }}
|
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.maven_pgp_signingKey }}
|
||||||
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.maven_pgp_signingPassword }}
|
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.maven_pgp_signingPassword }}
|
||||||
- name: Upload library
|
- name: Upload library
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{ matrix.os }}-library
|
name: ${{ matrix.os }}-library
|
||||||
path: ~/.m2
|
path: ~/.m2
|
||||||
@ -63,7 +54,7 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
needs: build
|
needs: build
|
||||||
name: Test on API ${{ matrix.api-level }} ${{ matrix.arch }}
|
name: Test on API ${{ matrix.api-level }} ${{ matrix.arch }}
|
||||||
runs-on: macos-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@ -135,37 +126,36 @@ jobs:
|
|||||||
target: android-tv
|
target: android-tv
|
||||||
arch: x86
|
arch: x86
|
||||||
- api-level: 32
|
- api-level: 32
|
||||||
target: google_apis
|
target: aosp_atd
|
||||||
arch: x86_64
|
arch: x86_64
|
||||||
- api-level: 33
|
- api-level: 33
|
||||||
target: google_apis
|
target: aosp_atd
|
||||||
|
arch: x86_64
|
||||||
|
- api-level: 34
|
||||||
|
target: aosp_atd
|
||||||
arch: x86_64
|
arch: x86_64
|
||||||
steps:
|
steps:
|
||||||
- name: checkout
|
- name: checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v3
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
cache: 'gradle'
|
cache: 'gradle'
|
||||||
- name: Cache Gradle Build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.gradle/caches/build-cache-*
|
|
||||||
~/.gradle/buildOutputCleanup/cache.properties
|
|
||||||
key: gradle-builds-core-${{ github.sha }}
|
|
||||||
restore-keys: |
|
|
||||||
gradle-builds-${{ runner.os }}
|
|
||||||
- name: ccache
|
- name: ccache
|
||||||
uses: hendrikmuhs/ccache-action@v1.2
|
uses: hendrikmuhs/ccache-action@v1.2
|
||||||
with:
|
with:
|
||||||
key: ${{ runner.os }}-${{ github.sha }}
|
key: ${{ runner.os }}-${{ github.sha }}
|
||||||
restore-keys: ${{ runner.os }}
|
restore-keys: ${{ runner.os }}
|
||||||
save: false
|
save: false
|
||||||
|
- name: Enable KVM group perms
|
||||||
|
run: |
|
||||||
|
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
|
||||||
|
sudo udevadm control --reload-rules
|
||||||
|
sudo udevadm trigger --name-match=kvm
|
||||||
- name: run tests
|
- name: run tests
|
||||||
uses: reactivecircus/android-emulator-runner@v2
|
uses: reactivecircus/android-emulator-runner@v2
|
||||||
with:
|
with:
|
||||||
@ -183,7 +173,7 @@ jobs:
|
|||||||
avd-name: ${{ matrix.api-level }}_${{ matrix.arch }}
|
avd-name: ${{ matrix.api-level }}_${{ matrix.arch }}
|
||||||
- name: Upload outputs
|
- name: Upload outputs
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: test-outputs
|
name: ${{ matrix.api-level }}-${{ matrix.arch }}-test-outputs
|
||||||
path: test/build/outputs
|
path: test/build/outputs
|
||||||
|
10
.github/workflows/maven.yml
vendored
10
.github/workflows/maven.yml
vendored
@ -9,15 +9,15 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out
|
- name: Check out
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Set up JDK 11
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v3
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
distribution: 'zulu'
|
distribution: 'temurin'
|
||||||
java-version: '11'
|
java-version: '17'
|
||||||
cache: 'gradle'
|
cache: 'gradle'
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: ./gradlew :lsplt:publish
|
run: ./gradlew :lsplt:publish
|
||||||
|
4
.github/workflows/pages.yml
vendored
4
.github/workflows/pages.yml
vendored
@ -29,7 +29,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
- name: Install doxygen
|
- name: Install doxygen
|
||||||
@ -37,7 +37,7 @@ jobs:
|
|||||||
- name: Generate doxygen
|
- name: Generate doxygen
|
||||||
run: doxygen docs/doxygen.cfg
|
run: doxygen docs/doxygen.cfg
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-pages-artifact@v1
|
uses: actions/upload-pages-artifact@v3
|
||||||
with:
|
with:
|
||||||
# Upload entire repository
|
# Upload entire repository
|
||||||
path: 'docs/docs'
|
path: 'docs/docs'
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
val androidTargetSdkVersion by extra(33)
|
val androidTargetSdkVersion by extra(34)
|
||||||
val androidMinSdkVersion by extra(21)
|
val androidMinSdkVersion by extra(21)
|
||||||
val androidBuildToolsVersion by extra("33.0.1")
|
val androidBuildToolsVersion by extra("34.0.0")
|
||||||
val androidCompileSdkVersion by extra(33)
|
val androidCompileSdkVersion by extra(34)
|
||||||
val androidNdkVersion by extra("25.1.8937393")
|
val androidNdkVersion by extra("26.2.11394342")
|
||||||
val androidCmakeVersion by extra("3.22.1+")
|
val androidCmakeVersion by extra("3.22.1+")
|
||||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,7 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
29
gradlew
vendored
29
gradlew
vendored
@ -83,10 +83,8 @@ done
|
|||||||
# This is normally unused
|
# This is normally unused
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
APP_BASE_NAME=${0##*/}
|
APP_BASE_NAME=${0##*/}
|
||||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD=maximum
|
MAX_FD=maximum
|
||||||
@ -133,10 +131,13 @@ location of your Java installation."
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
JAVACMD=java
|
JAVACMD=java
|
||||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
if ! command -v java >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
location of your Java installation."
|
location of your Java installation."
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
|||||||
case $MAX_FD in #(
|
case $MAX_FD in #(
|
||||||
max*)
|
max*)
|
||||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||||
# shellcheck disable=SC3045
|
# shellcheck disable=SC2039,SC3045
|
||||||
MAX_FD=$( ulimit -H -n ) ||
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
warn "Could not query maximum file descriptor limit"
|
warn "Could not query maximum file descriptor limit"
|
||||||
esac
|
esac
|
||||||
@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
|||||||
'' | soft) :;; #(
|
'' | soft) :;; #(
|
||||||
*)
|
*)
|
||||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||||
# shellcheck disable=SC3045
|
# shellcheck disable=SC2039,SC3045
|
||||||
ulimit -n "$MAX_FD" ||
|
ulimit -n "$MAX_FD" ||
|
||||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
esac
|
esac
|
||||||
@ -197,11 +198,15 @@ if "$cygwin" || "$msys" ; then
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Collect all arguments for the java command;
|
|
||||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
# shell script including quotes and variable substitutions, so put them in
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
# double quotes to make sure that they get re-expanded; and
|
|
||||||
# * put everything else in single quotes, so that it's not re-expanded.
|
# Collect all arguments for the java command:
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||||
|
# and any embedded shellness will be escaped.
|
||||||
|
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||||
|
# treated as '${Hostname}' itself on the command line.
|
||||||
|
|
||||||
set -- \
|
set -- \
|
||||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
20
gradlew.bat
vendored
20
gradlew.bat
vendored
@ -43,11 +43,11 @@ set JAVA_EXE=java.exe
|
|||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if %ERRORLEVEL% equ 0 goto execute
|
if %ERRORLEVEL% equ 0 goto execute
|
||||||
|
|
||||||
echo.
|
echo. 1>&2
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||||
echo.
|
echo. 1>&2
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
echo location of your Java installation.
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
|||||||
|
|
||||||
if exist "%JAVA_EXE%" goto execute
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
echo.
|
echo. 1>&2
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||||
echo.
|
echo. 1>&2
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
echo location of your Java installation.
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath("org.eclipse.jgit:org.eclipse.jgit:6.4.0.202211300538-r")
|
classpath("org.eclipse.jgit:org.eclipse.jgit:6.8.0.202311291450-r")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ android {
|
|||||||
prefab = true
|
prefab = true
|
||||||
}
|
}
|
||||||
|
|
||||||
packagingOptions {
|
packaging {
|
||||||
jniLibs {
|
jniLibs {
|
||||||
excludes += "**.so"
|
excludes += "**.so"
|
||||||
}
|
}
|
||||||
@ -63,6 +63,11 @@ android {
|
|||||||
targetSdk = androidTargetSdkVersion
|
targetSdk = androidTargetSdkVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
all {
|
all {
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
|
@ -37,8 +37,9 @@ struct MapInfo {
|
|||||||
|
|
||||||
/// \brief Scans /proc/self/maps and returns a list of \ref MapInfo entries.
|
/// \brief Scans /proc/self/maps and returns a list of \ref MapInfo entries.
|
||||||
/// This is useful to find out the inode of the library to hook.
|
/// This is useful to find out the inode of the library to hook.
|
||||||
|
/// \param[in] pid The process id to scan. This is "self" by default.
|
||||||
/// \return A list of \ref MapInfo entries.
|
/// \return A list of \ref MapInfo entries.
|
||||||
[[maybe_unused, gnu::visibility("default")]] static std::vector<MapInfo> Scan();
|
[[maybe_unused, gnu::visibility("default")]] static std::vector<MapInfo> Scan(std::string_view pid = "self");
|
||||||
};
|
};
|
||||||
|
|
||||||
/// \brief Register a hook to a function by inode. For so within an archive, you should use
|
/// \brief Register a hook to a function by inode. For so within an archive, you should use
|
||||||
|
@ -242,11 +242,12 @@ HookInfos hook_info;
|
|||||||
|
|
||||||
namespace lsplt {
|
namespace lsplt {
|
||||||
inline namespace v2 {
|
inline namespace v2 {
|
||||||
[[maybe_unused]] std::vector<MapInfo> MapInfo::Scan() {
|
[[maybe_unused]] std::vector<MapInfo> MapInfo::Scan(std::string_view pid) {
|
||||||
constexpr static auto kPermLength = 5;
|
constexpr static auto kPermLength = 5;
|
||||||
constexpr static auto kMapEntry = 7;
|
constexpr static auto kMapEntry = 7;
|
||||||
std::vector<MapInfo> info;
|
std::vector<MapInfo> info;
|
||||||
auto maps = std::unique_ptr<FILE, decltype(&fclose)>{fopen("/proc/self/maps", "r"), &fclose};
|
auto path = "/proc/" + std::string{pid} + "/maps";
|
||||||
|
auto maps = std::unique_ptr<FILE, decltype(&fclose)>{fopen(path.c_str(), "r"), &fclose};
|
||||||
if (maps) {
|
if (maps) {
|
||||||
char *line = nullptr;
|
char *line = nullptr;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
|
@ -5,8 +5,8 @@ pluginManagement {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
plugins {
|
plugins {
|
||||||
id("com.android.application") version "7.4.2"
|
id("com.android.application") version "8.2.2"
|
||||||
id("com.android.library") version "7.4.2"
|
id("com.android.library") version "8.2.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dependencyResolutionManagement {
|
dependencyResolutionManagement {
|
||||||
|
@ -45,8 +45,8 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
|
|
||||||
testOptions {
|
testOptions {
|
||||||
@ -81,8 +81,9 @@ android {
|
|||||||
createDevice(30, true)
|
createDevice(30, true)
|
||||||
// createDevice(31, false, "android-tv")
|
// createDevice(31, false, "android-tv")
|
||||||
createDevice(31, true, "aosp_atd")
|
createDevice(31, true, "aosp_atd")
|
||||||
createDevice(32, true, "google_apis")
|
createDevice(32, true, "aosp_atd")
|
||||||
createDevice(33, true, "google_apis")
|
createDevice(33, true, "aosp_atd")
|
||||||
|
createDevice(34, true, "aosp_atd")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user