|
4 A: V% C, o8 O. {' F4 t5 o- local function Table_exists(tables,value)
4 n: | `; ]5 o0 f- ]6 H5 j3 ?6 S - for index,content in pairs(tables) do
! ], z$ M7 F: D - if content:find(value) then/ R6 L" P: J5 n s' x% Y
- return true) ] ~. s7 N. z$ R, Y
- end
3 _! h- A- B. b' j4 {. p - end! R- B2 j. m$ L0 R$ _
- end1 k- Y: ]/ R* @7 A8 R; P7 [
- local function endsWith(sss,str)
" y: ]: J6 X1 S7 Q" w( L7 o - if sss:match(".") then
- F/ i5 v# t4 K. P8 s6 ? - if str==tostring(sss):match("%.(.+)") then
2 D8 X8 k4 A- i9 h } - return true! j5 u- y9 P8 L; W- z
- else% }( K3 z% h0 l" C9 q
- return false' Y, P3 d6 f8 C4 j5 u: D9 _% r
- end
7 J! R/ d6 Y6 t$ u - end& V! c1 `) X* [- f% d
- 7 A8 S" i, Q$ ]) w" l+ ^. k
- end! V7 C8 Q* Y0 q$ Q% U
: [4 D. j4 m9 U, `0 k& _- local function lastIndexOf(text,z)
" {, R" Q0 w @% g, _: Z - a=历遍字符串位置(text,z)* Z: v2 s) ?! `6 i5 {3 O
- return a[#a]
% Q [ ]) x( K! k9 \/ G - end
- k6 C/ Y$ O; }9 x8 L# \/ O/ u - function 取所有应用包名()
4 C- c. a4 B: A6 I - a={}. y8 y8 k! k( D v! p- e; r9 {1 x8 s* T
- installedPackages = activity.getPackageManager().getInstalledPackages(0);
; h* \ P. E: l% E E% B @8 h/ _; l - for index,content in pairs(luajava.astable(installedPackages)) do
, B3 e3 I7 F( m0 c - packageInfo = content.packageName;7 d% A8 f: S; i+ E4 I8 k4 o
- table.insert(a,tostring(packageInfo))
; a" }0 u$ ]$ {/ o: A5 m - end
; E; |. J9 `, s- t' J, w - return a# W6 u9 A7 S% U2 G% F8 W, T U3 `# K4 s
- end
h7 N( h1 P% c: X* C - function isHookByPackageName()2 K5 a, ]8 V3 z& h5 h
- import "android.content.pm.PackageManager"
/ V" F e' H8 `9 X - isHook = false;* e8 @6 R2 ~, B T
- packageManager = activity.getPackageManager();
, k" N# f% Q, n+ s e - applicationInfoList = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
7 c0 X, f- X; F( n - if (nil== applicationInfoList) then
6 U# \1 P, v- K0 ^* `. p - return isHook;# |/ ?( q9 G+ W$ S2 p" w1 Z- \4 i
- end
# K' N% X( b4 s" ^: J
' X {" m# b* ^% h2 H- if Table_exists(取所有应用包名(),"de.robv.android.xposed.installer") then
# F9 y2 e, h' K j( Q o1 O - isHook=true" u$ {: n. {6 ?- j
- else) h" M6 n+ L$ c( u/ r( y& l) G s
- ; S' Y9 T( b# _8 |
- if Table_exists(取所有应用包名(),"com.saurik.substrate") then
% g- o$ U X: w- B; S" b5 y - isHook=true7 b8 }8 b+ o3 w# }2 J
- else
5 I: Z6 K. {' ]; B
' d. h& U& y" D) V- end& e0 ?& u1 I* h; M; w8 l F
- end1 q- ?2 E1 S; U8 F1 I: K
- return isHook;' S( v" O% S% Z/ e) b
/ Q5 p" i( d" G5 }5 U- end
( c8 r, h7 a$ E& J# C4 K3 I% k - function isHookByJar()) E$ w5 m0 A# Z% w
- import"android.os.Process"* p8 @9 _+ w4 G1 Q! A+ L- q9 o
- isHook = false;
) u, f( @( K, b: [/ J/ M8 Y& }& |) \ - libraries = {};. b9 E: V K: ~, C/ H: l
- mapsFilename = "/proc/" .. Process.myPid() .. "/maps";
5 m C% E- y8 X) h) o* i0 b9 m - reader = BufferedReader(FileReader(mapsFilename));
/ E! g0 f; W( w - while reader.readLine() ~= nil do9 j1 v0 S# T. Z( H; M
- if endsWith(tostring(reader.readLine()),"jar") ||endsWith(tostring(reader.readLine()),"so")then# v- q7 f% X: R9 o n
- line=tostring(reader.readLine())- `) C' ~( W& A9 q: W* Q" B. h- b
- n= lastIndexOf(line," ");9 B$ a% S# m( @
- lines=string.sub(line,n+1,#line)3 f p8 u# A/ i# e5 F
- --print(lines)
# `2 c+ k: V4 o+ Q( O: @ - table.insert(libraries,tostring(lines))) C( L" t0 E( T9 ?) [0 [1 G4 i
- end' _- p2 ]' ]. Q6 h
- end
; s2 N# [: K7 S - 4 R0 W$ N& ?. D0 I- d3 i: L
- library=0
+ t$ }/ n7 Z ]5 Y L+ ? - while library~=#libraries do
8 M0 q" Q4 f" b! k7 ? - library=library+1# c6 f+ U% P8 _
- if libraries[library]:match("com.saurik.substrate") then9 w( r% e' C3 j6 t9 c' z
- Log.wtf("HookDetection", "Substrate shared object found: " + library);
% |% @# F P3 | - isHook = true;
$ Q7 F, n$ F k. [6 k7 [6 k - end, P) B- W- p. R, H- \1 I$ V
- if libraries[library]:match("Xposed") then8 I2 _$ u+ k3 n
- Log.wtf("HookDetection", "Xposed JAR found: " + library);) n. _7 E6 `1 ^: m9 A" v; ~, G! ?. [
- isHook = true;, W0 c3 r- I/ F7 J7 P
- end6 _$ X0 e4 g& t/ X7 T2 `
- end. e" r9 L" k3 B' i$ w+ S# {
- reader.close();$ N8 x( [, p8 R9 Y1 V. y
# N3 R* W# v! v6 n* |- return isHook;
2 @& u& n; X3 D+ a$ r/ Y - . @% g( d5 D: h$ A2 ]& l
- end
复制代码 |
|