Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
ReyunSecureSdk
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhanglei
ReyunSecureSdk
Commits
deefe57d
Commit
deefe57d
authored
Apr 23, 2021
by
Fear1ess
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
4/23
parent
20242691
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
98 additions
and
35 deletions
+98
-35
MainActivity.java
app/src/main/java/com/reyun/sdktestdemo/MainActivity.java
+24
-8
collect.c
wandun/src/main/cpp/collect.c
+58
-25
utils.h
wandun/src/main/cpp/include/utils.h
+1
-0
wd_syscall.h
wandun/src/main/cpp/include/wd_syscall.h
+2
-0
utils.c
wandun/src/main/cpp/utils.c
+8
-2
wd_jni.c
wandun/src/main/cpp/wd_jni.c
+5
-0
No files found.
app/src/main/java/com/reyun/sdktestdemo/MainActivity.java
View file @
deefe57d
...
...
@@ -26,6 +26,7 @@ import android.location.Location;
import
android.location.LocationListener
;
import
android.location.LocationManager
;
import
android.net.ConnectivityManager
;
import
android.net.LinkProperties
;
import
android.net.Network
;
import
android.net.NetworkCapabilities
;
import
android.net.NetworkInfo
;
...
...
@@ -51,6 +52,7 @@ import com.reyun.wandun.WdMain;
import
java.io.ByteArrayInputStream
;
import
java.io.IOException
;
import
java.net.InetAddress
;
import
java.net.NetworkInterface
;
import
java.net.SocketException
;
import
java.security.cert.Certificate
;
...
...
@@ -107,14 +109,6 @@ public class MainActivity extends AppCompatActivity {
e
.
printStackTrace
();
}
CameraManager
camera
=
(
CameraManager
)
getSystemService
(
Service
.
CAMERA_SERVICE
);
try
{
String
[]
list
=
camera
.
getCameraIdList
();
CameraCharacteristics
cc
=
camera
.
getCameraCharacteristics
(
"0"
);
Log
.
d
(
"haha"
,
"onCreate: "
);
}
catch
(
CameraAccessException
e
)
{
e
.
printStackTrace
();
}
}
@Override
...
...
@@ -144,5 +138,27 @@ public class MainActivity extends AppCompatActivity {
});
}
}
public
String
getDns
()
{
String
result
=
""
;
ConnectivityManager
cm
=
(
ConnectivityManager
)
getSystemService
(
Context
.
CONNECTIVITY_SERVICE
);
NetworkInfo
activeNetworkInfo
=
cm
.
getActiveNetworkInfo
();
for
(
Network
network
:
cm
.
getAllNetworks
())
{
NetworkInfo
networkInfo
=
cm
.
getNetworkInfo
(
network
);
if
(
networkInfo
.
getType
()
==
activeNetworkInfo
.
getType
())
{
LinkProperties
lp
=
cm
.
getLinkProperties
(
network
);
for
(
InetAddress
addr
:
lp
.
getDnsServers
())
{
// Get DNS IP address here:
result
+=
addr
.
getHostAddress
()
+
","
;
}
}
}
if
(
result
.
contains
(
","
)){
result
=
result
.
substring
(
0
,
result
.
length
()
-
1
);
}
result
=
"["
+
result
+
"]"
;
return
result
;
}
}
wandun/src/main/cpp/collect.c
View file @
deefe57d
...
...
@@ -16,6 +16,7 @@
#include <sys/mman.h>
#include <sys/sysinfo.h>
#include <sys/statfs.h>
#include <sys/stat.h>
#include "openssl/md5.h"
#include <arpa/inet.h>
#include <sys/syscall.h>
...
...
@@ -88,13 +89,6 @@ jstring do_collect(JNIEnv* env) {
jstring
data_jstr
=
(
*
env
)
->
NewStringUTF
(
env
,
data
);
return
data_jstr
;
/*
size_t len = strlen(data);
int fd = WDSYSCALL(SYS_openat, AT_FDCWD, "/sdcard/wd_data", O_CREAT|O_RDWR|O_TRUNC, S_IRWXU);
int err = errno;
WDSYSCALL(SYS_write, fd, data, len);
WDSYSCALL(SYS_close, fd);*/
}
void
collect_app_info
(
JNIEnv
*
env
,
cJSON
*
json
)
{
...
...
@@ -102,6 +96,7 @@ void collect_app_info(JNIEnv* env, cJSON *json) {
loge
(
WD_COLLECT
,
"%s"
,
"collect_app_info func call env->pushLocalFrame failed!"
);
return
;
}
//package_name
jobject
pkgName
=
wdCallObjectMethod
(
env
,
g_app_context
,
"getPackageName"
,
"()Ljava/lang/String;"
);
addJniStringToJson
(
env
,
json
,
"package_name"
,
pkgName
);
...
...
@@ -181,6 +176,21 @@ void collect_app_info(JNIEnv* env, cJSON *json) {
fclose
(
fp
);
}
//apk_path
jstring
apk_path_jstr
=
wdCallObjectMethod
(
env
,
g_app_context
,
"getPackageResourcePath"
,
"()Ljava/lang/String;"
);
if
(
apk_path_jstr
!=
NULL
)
{
const
char
*
path
=
(
*
env
)
->
GetStringUTFChars
(
env
,
apk_path_jstr
,
NULL
);
cJSON_AddStringToObject
(
json
,
"apk_path"
,
path
);
//apk_size
struct
stat
st
;
if
(
WDSYSCALL
(
WD_SYS_fstatat
,
AT_FDCWD
,
path
,
&
st
,
0
)
==
0
)
{
cJSON_AddNumberToObject
(
json
,
"apk_size"
,
st
.
st_size
);
}
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
apk_path_jstr
,
path
);
(
*
env
)
->
DeleteLocalRef
(
env
,
apk_path_jstr
);
}
logd
(
WD_COLLECT
,
"%s"
,
"collect app info finished..."
);
(
*
env
)
->
PopLocalFrame
(
env
,
NULL
);
}
...
...
@@ -221,8 +231,6 @@ void collect_imei(JNIEnv *env, cJSON *json) {
logd
(
WD_COLLECT
,
"%s"
,
"collect imei finished..."
);
}
void
collect_android_id
(
JNIEnv
*
env
,
cJSON
*
json
)
{
jstring
key_str
=
(
*
env
)
->
NewStringUTF
(
env
,
"android_id"
);
jobject
cr
=
wdCallObjectMethod
(
env
,
g_app_context
,
"getContentResolver"
,
"()Landroid/content/ContentResolver;"
);
...
...
@@ -292,7 +300,8 @@ void collect_prop_info(JNIEnv* env, cJSON* json) {
cJSON
*
pi_json
=
cJSON_CreateObject
();
const
char
*
prop_key
[]
=
{
"wifi.interface"
,
"gsm.sim.state"
,
"gsm.version.baseband"
,
"gsm.version.ril-impl"
,
"gsm.current.phone-type"
,
"gsm.operator.isroaming"
,
"gsm.network.type"
,
"persist.sys.timezone"
,
"init.svc.adbd"
,
"ro.build.date.utc"
,
"gsm.operator.alpha"
,
"ro.opengles.version"
};
"init.svc.adbd"
,
"ro.build.date.utc"
,
"gsm.operator.alpha"
,
"ro.opengles.version"
,
"ro.serialno"
};
char
buf
[
64
];
for
(
int
i
=
0
;
i
<
sizeof
(
prop_key
)
/
sizeof
(
const
char
*
);
++
i
)
{
memset
((
void
*
)
buf
,
0
,
64
);
...
...
@@ -307,7 +316,7 @@ void collect_settings_info(JNIEnv *env, cJSON *json) {
const
char
*
settings_secure_key
[]
=
{
"usb_mass_storage_enabled"
,
"development_settings_enabled"
,
"accessibility_enabled"
};
const
char
*
settings_system_key
[]
=
{
"screen_brightness"
,
"accelerometer_rotation"
,
"screen_brightness_mode"
,
"sound_effects_enabled"
,
"screen_off_timeout"
};
const
char
*
settings_global_key
[]
=
{
"lock_pattern_autolock"
,
"lock_pattern_visible_pattern"
};
//
const char* settings_global_key[] = {"lock_pattern_autolock", "lock_pattern_visible_pattern"};
jobject
cr
=
wdCallObjectMethod
(
env
,
g_app_context
,
"getContentResolver"
,
"()Landroid/content/ContentResolver;"
);
...
...
@@ -322,13 +331,14 @@ void collect_settings_info(JNIEnv *env, cJSON *json) {
(
*
env
)
->
DeleteLocalRef
(
env
,
key_str
);
(
*
env
)
->
DeleteLocalRef
(
env
,
jstr
);
}
/*
for(int m = 0; m < sizeof(settings_global_key)/sizeof(const char*); ++m) {
jstring key_str = (*env)->NewStringUTF(env, settings_global_key[m]);
jint value = wdCallStaticIntMethod(env, "android/provider/Settings$Global", "getInt",
"(Landroid/content/ContentResolver;Ljava/lang/String;)I", cr, key_str);
cJSON_AddNumberToObject(si_json, settings_global_key[m], value);
(*env)->DeleteLocalRef(env, key_str);
}
}
*/
for
(
int
j
=
0
;
j
<
sizeof
(
settings_system_key
)
/
sizeof
(
const
char
*
);
++
j
)
{
jstring
key_str
=
(
*
env
)
->
NewStringUTF
(
env
,
settings_system_key
[
j
]);
jint
value
=
wdCallStaticIntMethod
(
env
,
"android/provider/Settings$System"
,
"getInt"
,
...
...
@@ -375,9 +385,9 @@ void collect_camera_info(JNIEnv *env, cJSON *json) {
cJSON
*
item_json
=
cJSON_CreateArray
();
//获取CameraManager对象
jobject
camera_Str
=
(
*
env
)
->
NewStringUTF
(
env
,
"camera"
);
jobject
cameraManager_obj
=
wdCallObjectMethod
(
env
,
g_app_context
,
"getSystemService"
,
"(Ljava/lang/String;)Ljava/lang/Object;"
,
camera_Str
);
jobject
camera_Str
=
(
*
env
)
->
NewStringUTF
(
env
,
"camera"
);
jobject
cameraManager_obj
=
wdCallObjectMethod
(
env
,
g_app_context
,
"getSystemService"
,
"(Ljava/lang/String;)Ljava/lang/Object;"
,
camera_Str
);
jobjectArray
cameraIdList_Obj
=
wdCallObjectMethod
(
env
,
cameraManager_obj
,
"getCameraIdList"
,
"()[Ljava/lang/String;"
);
int
count
=
(
*
env
)
->
GetArrayLength
(
env
,
cameraIdList_Obj
);
...
...
@@ -700,6 +710,7 @@ void collect_mem_info(JNIEnv *env, cJSON *json) {
}
void
collect_network_info
(
JNIEnv
*
env
,
cJSON
*
json
)
{
cJSON
*
network
=
cJSON_CreateObject
();
jstring
ci_jstr
=
(
*
env
)
->
NewStringUTF
(
env
,
"connectivity"
);
jobject
ci
=
wdCallObjectMethod
(
env
,
g_app_context
,
"getSystemService"
,
"(Ljava/lang/String;)Ljava/lang/Object;"
,
ci_jstr
);
...
...
@@ -743,37 +754,64 @@ void collect_network_info(JNIEnv *env, cJSON *json) {
default:
break
;
}
cJSON_AddStringToObject
(
json
,
"network_type"
,
network_type
);
cJSON_AddStringToObject
(
network
,
"network_type"
,
network_type
);
}
//wifi
else
if
(
conn_type
==
1
)
{
cJSON_AddStringToObject
(
json
,
"network_type"
,
"wifi"
);
cJSON_AddStringToObject
(
network
,
"network_type"
,
"wifi"
);
//get wifi ssid bssid ip, need ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION permission on Android high version
jstring
wm_jstr
=
(
*
env
)
->
NewStringUTF
(
env
,
"wifi"
);
jobject
wm
=
wdCallObjectMethod
(
env
,
g_app_context
,
"getSystemService"
,
"(Ljava/lang/String;)Ljava/lang/Object;"
,
wm_jstr
);
jobject
wi
=
wdCallObjectMethod
(
env
,
wm
,
"getConnectionInfo"
,
"()Landroid/net/wifi/WifiInfo;"
);
jobject
ssid
=
wdCallObjectMethod
(
env
,
wi
,
"getSSID"
,
"()Ljava/lang/String;"
);
addJniStringToJson
(
env
,
json
,
"ssid"
,
ssid
);
addJniStringToJson
(
env
,
network
,
"ssid"
,
ssid
);
(
*
env
)
->
DeleteLocalRef
(
env
,
ssid
);
jobject
bssid
=
wdCallObjectMethod
(
env
,
wi
,
"getBSSID"
,
"()Ljava/lang/String;"
);
addJniStringToJson
(
env
,
json
,
"bssid"
,
bssid
);
addJniStringToJson
(
env
,
network
,
"bssid"
,
bssid
);
(
*
env
)
->
DeleteLocalRef
(
env
,
bssid
);
jint
wifi_ip_int
=
wdCallIntMethod
(
env
,
wi
,
"getIpAddress"
,
"()I"
);
char
wifi_ip
[
32
]
=
{
0
};
inet_ntop
(
AF_INET
,
&
wifi_ip_int
,
wifi_ip
,
31
);
cJSON_AddStringToObject
(
json
,
"wifi_ip"
,
wifi_ip
);
cJSON_AddStringToObject
(
network
,
"wifi_ip"
,
wifi_ip
);
(
*
env
)
->
DeleteLocalRef
(
env
,
wi
);
(
*
env
)
->
DeleteLocalRef
(
env
,
wm
);
(
*
env
)
->
DeleteLocalRef
(
env
,
wm_jstr
);
}
//dns
cJSON
*
dns
=
cJSON_CreateArray
();
jobject
nw
=
wdCallObjectMethod
(
env
,
ci
,
"getActiveNetwork"
,
"()Landroid/net/Network;"
);
if
(
nw
!=
NULL
)
{
jobject
lp
=
wdCallObjectMethod
(
env
,
ci
,
"getLinkProperties"
,
"(Landroid/net/Network;)Landroid/net/LinkProperties;"
,
nw
);
if
(
lp
!=
NULL
)
{
jobject
dns_list
=
wdCallObjectMethod
(
env
,
lp
,
"getDnsServers"
,
"()Ljava/util/List;"
);
if
(
dns_list
!=
NULL
)
{
jint
size
=
wdCallIntMethod
(
env
,
dns_list
,
"size"
,
"()I"
);
for
(
int
i
=
0
;
i
<
size
;
++
i
)
{
jobject
ia
=
wdCallObjectMethod
(
env
,
dns_list
,
"get"
,
"(I)Ljava/lang/Object;"
,
i
);
jstring
address_jstr
=
wdCallObjectMethod
(
env
,
ia
,
"getHostAddress"
,
"()Ljava/lang/String;"
);
addJniStringToArray
(
env
,
dns
,
address_jstr
);
(
*
env
)
->
DeleteLocalRef
(
env
,
address_jstr
);
}
(
*
env
)
->
DeleteLocalRef
(
env
,
dns_list
);
}
(
*
env
)
->
DeleteLocalRef
(
env
,
lp
);
}
(
*
env
)
->
DeleteLocalRef
(
env
,
nw
);
}
cJSON_AddItemToObject
(
network
,
"dns"
,
dns
);
(
*
env
)
->
DeleteLocalRef
(
env
,
ni
);
return_label:
(
*
env
)
->
DeleteLocalRef
(
env
,
ci
);
(
*
env
)
->
DeleteLocalRef
(
env
,
ci_jstr
);
cJSON_AddItemToObject
(
json
,
"network"
,
network
);
logd
(
WD_COLLECT
,
"%s"
,
"collect network info finished..."
);
}
...
...
@@ -791,7 +829,6 @@ void collect_user_agent(JNIEnv *env, cJSON *json) {
(
*
env
)
->
DeleteLocalRef
(
env
,
key_jstr
);
(
*
env
)
->
DeleteLocalRef
(
env
,
ua2_jstr
);
logd
(
WD_COLLECT
,
"%s"
,
"collect user agent finished..."
);
}
...
...
@@ -1046,13 +1083,11 @@ void collect_risk_info(JNIEnv *env, cJSON *json) {
(
*
env
)
->
DeleteLocalRef
(
env
,
files_path_jstr
);
(
*
env
)
->
DeleteLocalRef
(
env
,
files_dir
);
cJSON_AddItemToObject
(
json
,
"risk"
,
risk_item
);
}
void
collect_common_app
(
JNIEnv
*
env
,
cJSON
*
json
)
{
cJSON
*
item
=
cJSON_CreateArray
();
const
char
*
apps
[]
=
{
"com.tencent.mm"
,
"com.tencent.mobileqq"
,
...
...
@@ -1075,7 +1110,6 @@ void collect_common_app(JNIEnv *env, cJSON *json) {
"com.ss.android.article.news"
,
"com.tencent.news"
};
for
(
int
i
=
0
;
i
<
sizeof
(
apps
)
/
sizeof
(
const
char
*
);
++
i
)
{
char
path
[
128
]
=
{
0
};
snprintf
(
path
,
127
,
"/data/data/%s"
,
apps
[
i
]);
...
...
@@ -1083,7 +1117,6 @@ void collect_common_app(JNIEnv *env, cJSON *json) {
cJSON_AddItemToArray
(
item
,
cJSON_CreateString
(
apps
[
i
]));
}
}
cJSON_AddItemToObject
(
json
,
"common_used_apps"
,
item
);
}
wandun/src/main/cpp/include/utils.h
View file @
deefe57d
...
...
@@ -9,6 +9,7 @@
#include <jni.h>
void
addJniStringToJson
(
JNIEnv
*
env
,
cJSON
*
json
,
const
char
*
key
,
jobject
jstr
);
void
addJniStringToArray
(
JNIEnv
*
env
,
cJSON
*
json
,
jobject
jstr
);
void
getJniStringSha256
(
JNIEnv
*
env
,
jobject
jstr
,
char
*
sha256
);
void
bytes2Hex
(
const
unsigned
char
*
source
,
char
*
dest
,
int
sourceLen
,
int
mac_format
);
void
hex2Bytes
(
const
char
*
source
,
unsigned
char
*
dest
,
int
sourceLen
);
...
...
wandun/src/main/cpp/include/wd_syscall.h
View file @
deefe57d
...
...
@@ -12,11 +12,13 @@
#ifdef __arm__
#define WDSYSCALL(cmd, args...) wd_syscall_arm(WDNUM(cmd), ##args)
#define WD_SYS_mmap SYS_mmap2
#define WD_SYS_fstatat SYS_fstatat64
#endif
#ifdef __aarch64__
#define WDSYSCALL(cmd, args...) wd_syscall_aarch64(WDNUM(cmd), ##args)
#define WD_SYS_mmap SYS_mmap
#define WD_SYS_fstatat SYS_newfstatat
#endif
#ifdef x86
...
...
wandun/src/main/cpp/utils.c
View file @
deefe57d
...
...
@@ -76,13 +76,19 @@ void hex2Bytes(const char* source, unsigned char* dest, int sourceLen)
return
;
}
void
addJniStringToArray
(
JNIEnv
*
env
,
cJSON
*
json
,
jobject
jstr
)
{
addJniStringToJson
(
env
,
json
,
NULL
,
jstr
);
}
void
addJniStringToJson
(
JNIEnv
*
env
,
cJSON
*
json
,
const
char
*
key
,
jobject
jstr
)
{
if
(
jstr
==
NULL
)
{
cJSON_AddStringToObject
(
json
,
key
,
""
);
if
(
key
)
cJSON_AddStringToObject
(
json
,
key
,
""
);
else
cJSON_AddItemToArray
(
json
,
cJSON_CreateString
(
""
));
}
else
{
jboolean
bl
=
0
;
const
char
*
value
=
(
*
env
)
->
GetStringUTFChars
(
env
,
jstr
,
&
bl
);
cJSON_AddStringToObject
(
json
,
key
,
value
);
if
(
key
)
cJSON_AddStringToObject
(
json
,
key
,
value
);
else
cJSON_AddItemToArray
(
json
,
cJSON_CreateString
(
value
));
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jstr
,
value
);
}
}
...
...
wandun/src/main/cpp/wd_jni.c
View file @
deefe57d
...
...
@@ -251,6 +251,10 @@ jvalue wdCallStaticMethod(JNIEnv* env, const char* clsName, const char* methodNa
jvalue
wdCallMethod
(
JNIEnv
*
env
,
jobject
obj
,
const
char
*
methodName
,
const
char
*
methodSig
,
va_list
args
)
{
jclass
cls
=
(
*
env
)
->
GetObjectClass
(
env
,
obj
);
jmethodID
methodId
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
methodName
,
methodSig
);
if
(
methodId
==
NULL
)
{
logd
(
WD_JNI
,
"not find method %s%s"
,
methodName
,
methodSig
);
goto
return_label
;
}
jvalue
value
=
{
0
};
switch
(
wdGetMethodRetType
(
methodSig
))
{
case
'V'
:
...
...
@@ -287,6 +291,7 @@ jvalue wdCallMethod(JNIEnv* env, jobject obj, const char* methodName, const char
default:
break
;
}
wdCheckException
(
env
);
return_label:
(
*
env
)
->
DeleteLocalRef
(
env
,
cls
);
return
value
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment