seemp: enhance support for malware detection

Improves the ability of a malware protection program
to detect anomalies in various activities. It records
task activities in a log and rates the actions according
to how a typical user would use the tools.

Change-Id: I976bc97f57215f173b046326b5f905522d785288
Signed-off-by: Mona Hossain <mhossain@codeaurora.org>
Signed-off-by: William Clark <wclark@codeaurora.org>
Signed-off-by: Mallikarjuna Reddy Amireddy <mamire@codeaurora.org>
This commit is contained in:
William Clark 2015-05-18 22:30:15 -07:00 committed by Mallikarjuna Reddy Amireddy
parent 0dcd2def74
commit 748d68441f
15 changed files with 907 additions and 59 deletions

View File

@ -302,6 +302,7 @@ config QPNP_HAPTIC
config SEEMP_CORE
tristate "SEEMP Core"
help
This option enables malware protection component
to log on-device software API activity.
This option enables Qualcomm Technologies, Inc. Snapdragron Smart Protection to
detect anomalies in various activities. It records task activities in a log and
rates the actions according to whether a typical user would use the tools.
endmenu

View File

@ -19,6 +19,7 @@ obj-$(CONFIG_QPNP_POWER_ON) += qpnp-power-on.o
obj-$(CONFIG_QPNP_VIBRATOR) += qpnp-vibrator.o
obj-$(CONFIG_QPNP_CLKDIV) += qpnp-clkdiv.o
obj-$(CONFIG_QPNP_COINCELL) += qpnp-coincell.o
obj-$(CONFIG_SEEMP_CORE) += seemp_core/
obj-$(CONFIG_MSM_AVTIMER) += avtimer.o
obj-$(CONFIG_SSM) += ssm.o
obj-$(CONFIG_QPNP_REVID) += qpnp-revid.o

View File

@ -1,2 +1,3 @@
ccflags-y += -Iinclude/linux
obj-$(CONFIG_SEEMP_CORE) += seemp_core.o
seemp_core-objs:= seemp_logk.o seemp_ringbuf.o
seemp_core-objs:= seemp_logk.o seemp_ringbuf.o seemp_event_encoder.o

View File

@ -0,0 +1,167 @@
/*
* Copyright (c) 2015, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#define PROVIDE_PARAM_ID
#include <linux/seemp_param_id.h>
#include "seemp_event_encoder.h"
#include "seemp_logk.h"
static char *scan_id(char *s);
static void encode_seemp_section(char *section_start, char *section_eq,
char *section_end, bool param, bool numeric,
int id, __s32 numeric_value);
static void check_param_range(char *section_eq, char **s, char ch, bool *param,
bool *numeric, int val_len, __s32 *numeric_value)
{
long long_value = 0;
if (*param && *numeric) {
/*check if 2 bytes & in[-99999,999999]*/
*numeric = (val_len >= 2);
if ((val_len >= 2) && (val_len <= 6)) {
if (kstrtol(section_eq + 1, 10, &long_value)
!= 0) {
*numeric = false;
} else {
*numeric_value = (__s16)long_value;
*numeric = (*numeric_value >= -32768) &&
(*numeric_value <= 32767);
}
**s = ch;
}
}
}
void encode_seemp_params(struct seemp_logk_blk *blk)
{
char *s = blk->payload.msg + 1;
blk->payload.msg[BLK_MAX_MSG_SZ - 1] = 0; /* zero-terminate */
while (true) {
char *section_start = s;
char *section_eq = scan_id(s);
bool param = (section_eq - section_start >= 2) &&
(*section_eq == '=') && (section_eq[1] != ' ');
bool numeric = false;
int id = -1;
__s32 numeric_value = 0;
int id_len;
int val_len;
char ch;
if (param) {
id = param_id_index(section_start, section_eq);
if (id < 0)
param = false;
}
if (!param) {
s = section_eq;
while ((*s != 0) && (*s != ','))
s++;
} else {
s = section_eq + 1; /* equal sign */
numeric = (*s == '-') || ((*s >= '0') && (*s <= '9'));
if (numeric)
s++; /* first char of number */
while ((*s != 0) && (*s != ',')) {
if (*s == '=')
param = false;
else if (!((*s >= '0') && (*s <= '9')))
numeric = false;
s++;
}
if (param) {
id_len = section_eq - section_start;
val_len = s - (section_eq + 1);
param = (id_len >= 2) && (id_len <= 31)
&& (val_len <= 31);
ch = *s;
*s = 0;
check_param_range(section_eq, &s, ch, &param,
&numeric, val_len, &numeric_value);
}
}
encode_seemp_section(section_start, section_eq, s, param,
numeric, id, numeric_value);
if (*s == 0)
break;
s++;
}
blk->len = s - blk->payload.msg;
}
static char *scan_id(char *s)
{
while ((*s == '_') ||
((*s >= 'A') && (*s <= 'Z')) ||
((*s >= 'a') && (*s <= 'z'))) {
s++;
}
return s;
}
static void encode_seemp_section(char *section_start, char *section_eq,
char *section_end, bool param, bool numeric,
int id, __s32 numeric_value) {
param = param && (section_eq + 1 < section_end);
if (!param) {
/* Encode skip section */
int skip_len = section_end - section_start;
char skip_len_hi = skip_len & 0xE0;
char skip_len_lo = skip_len & 0x1F;
if (skip_len < 32) {
section_start[-1] = 0xC0 | skip_len_lo;
/* [1:1:0:0 0000] */
} else {
section_start[-1] = 0xE0 | skip_len_lo;
/* [1:1:1:0 0000] */
if (skip_len_hi & 0x20)
section_start[0] |= 0x80;
if (skip_len_hi & 0x40)
section_start[1] |= 0x80;
if (skip_len_hi & 0x80)
section_start[2] |= 0x80;
}
} else {
/* Encode ID=VALUE section */
char id_len = section_eq - section_start;
char value_len = section_end - (section_eq + 1);
section_start[-1] = 0x00 | id_len;
*(__s16 *)section_start = id;
section_eq[0] = (!numeric ? 0x80 : 0x00) | value_len;
if (numeric)
*(__s16 *)(section_eq + 1) = numeric_value;
}
}

View File

@ -0,0 +1,21 @@
/*
* Copyright (c) 2015, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __SEEMP_EVENT_ENCODER_H__
#define __SEEMP_EVENT_ENCODER_H__
#include "seemp_logk.h"
void encode_seemp_params(struct seemp_logk_blk *blk);
#endif /* __SEEMP_EVENT_ENCODER_H__ */

View File

@ -78,6 +78,7 @@ void *seemp_logk_kernel_start_record(char **buf)
int ret;
DEFINE_WAIT(write_wait);
ret = 0;
idx = 0;
now = current_kernel_time();
@ -141,7 +142,7 @@ void *seemp_logk_kernel_start_record(char **buf)
ts.tm_year, ts.tm_mon, ts.tm_mday,
ts.tm_hour, ts.tm_min, ts.tm_sec);
*buf = blk->msg;
*buf = blk->payload.msg;
return blk;
}
@ -151,14 +152,14 @@ void seemp_logk_kernel_end_record(void *blck)
int current_uid = 0;
int parsed_current_uid = 0;
struct seemp_logk_blk *blk = (struct seemp_logk_blk *)blck;
if (blk) {
blk->len = strlen(blk->msg);
/*update status at the very end*/
blk->status |= 0x1;
current_uid = current_uid();
if (current_uid < USER_APP_START_UID) {
parsed_current_uid =
get_uid_from_message_for_system_event(blk->msg);
get_uid_from_message_for_system_event(blk->payload.msg);
if (parsed_current_uid != -1)
blk->uid = parsed_current_uid;
else
@ -166,7 +167,7 @@ void seemp_logk_kernel_end_record(void *blck)
} else
blk->uid = current_uid;
ringbuf_finish_writer(slogk_dev);
ringbuf_finish_writer(slogk_dev, blk);
}
}
@ -190,6 +191,7 @@ static int get_uid_from_message_for_system_event(const char *buffer)
while (*p1) {
char *p1begin = p1;
char *p2 = (char *)comparator_string;
aindex = 0;
while (*p1 && *p2 && *p1 == *p2) {
@ -239,6 +241,7 @@ static int seemp_logk_usr_record(const char __user *buf, size_t count)
int currentuid;
int parsedcurrentuid;
DEFINE_WAIT(write_wait);
if (buf) {
local_blk = (struct seemp_logk_blk *)buf;
if (copy_from_user(&usr_blk.pid, &local_blk->pid,
@ -253,8 +256,8 @@ static int seemp_logk_usr_record(const char __user *buf, size_t count)
if (copy_from_user(&usr_blk.len, &local_blk->len,
sizeof(usr_blk.len)) != 0)
return -EFAULT;
if (copy_from_user(usr_blk.msg, local_blk->msg,
sizeof(usr_blk.msg)) != 0)
if (copy_from_user(&usr_blk.payload, &local_blk->payload,
sizeof(struct blk_payload)) != 0)
return -EFAULT;
}
idx = ret = 0;
@ -293,16 +296,15 @@ static int seemp_logk_usr_record(const char __user *buf, size_t count)
blk->status = 0x0;
mutex_unlock(&slogk_dev->lock);
}
if (usr_blk.len > BLK_MAX_MSG_SZ-1)
usr_blk.len = BLK_MAX_MSG_SZ-1;
memcpy(blk->msg, usr_blk.msg, usr_blk.len);
blk->msg[usr_blk.len] = '\0';
blk->len = usr_blk.len;
if (usr_blk.len > sizeof(struct blk_payload)-1)
usr_blk.len = sizeof(struct blk_payload)-1;
memcpy(&blk->payload, &usr_blk.payload, sizeof(struct blk_payload));
blk->pid = usr_blk.pid;
currentuid = usr_blk.uid;
if (currentuid <= USER_APP_START_UID) {
parsedcurrentuid = get_uid_from_message_for_system_event
(blk->msg);
(blk->payload.msg);
if (parsedcurrentuid != -EPERM)
blk->uid = parsedcurrentuid;
else
@ -320,7 +322,7 @@ static int seemp_logk_usr_record(const char __user *buf, size_t count)
ts.tm_hour, ts.tm_min, ts.tm_sec);
strlcpy(blk->appname, current->comm, TASK_COMM_LEN);
blk->status |= 0x1;
ringbuf_finish_writer(slogk_dev);
ringbuf_finish_writer(slogk_dev, blk);
return ret;
}
@ -391,6 +393,7 @@ static long seemp_logk_ioctl(struct file *filp, unsigned int cmd,
mutex_unlock(&sdev->lock);
if (ret && block_apps)
wake_up_interruptible(&sdev->writers_wq);
return 0;
} else if (cmd == SEEMP_CMD_GET_RINGSZ) {
if (copy_to_user((unsigned int *)arg, &sdev->ring_sz,
sizeof(unsigned int)))
@ -405,11 +408,9 @@ static long seemp_logk_ioctl(struct file *filp, unsigned int cmd,
return seemp_logk_set_mapping(arg);
} else if (SEEMP_CMD_CHECK_FILTER == cmd) {
return seemp_logk_check_filter(arg);
} else {
pr_err("Invalid Request %X\n", cmd);
return -ENOIOCTLCMD;
}
return 0;
pr_err("Invalid Request %X\n", cmd);
return -ENOIOCTLCMD;
}
static long seemp_logk_reserve_rdblks(
@ -419,6 +420,7 @@ static long seemp_logk_reserve_rdblks(
struct read_range rrange;
DEFINE_WAIT(read_wait);
mutex_lock(&sdev->lock);
if (sdev->num_writers > 0 || sdev->num_read_avail_blks <= 0) {
ret = -EPERM;
@ -519,6 +521,7 @@ static long seemp_logk_set_mapping(unsigned long arg)
__u32 *pbuffer;
int i;
struct seemp_source_mask *pnewmask;
if (copy_from_user(&num_elements,
(__u32 __user *)arg, sizeof(__u32)))
return -EFAULT;
@ -534,6 +537,7 @@ static long seemp_logk_set_mapping(unsigned long arg)
* seemp_core was probably restarted.
*/
struct seemp_source_mask *ptempmask;
num_sources = 0;
ptempmask = pmask;
pmask = NULL;
@ -584,6 +588,7 @@ static long seemp_logk_check_filter(unsigned long arg)
for (i = 0; i < num_sources; i++) {
if (hash == pmask[i].hash) {
int result = pmask[i].isOn;
read_unlock(&filter_lock);
return result;
}
@ -673,14 +678,12 @@ __init int seemp_logk_init(void)
}
slogk_dev = kmalloc(sizeof(*slogk_dev), GFP_KERNEL);
if (!slogk_dev) {
pr_err("kmalloc failure!\n");
if (!slogk_dev)
return -ENOMEM;
}
slogk_dev->ring_sz = ring_sz;
slogk_dev->blk_sz = sizeof(struct seemp_logk_blk);
/*intialize ping-pong buffers*/
/*initialize ping-pong buffers*/
ret = ringbuf_init(slogk_dev);
if (ret < 0) {
pr_err("Init Failed, ret = %d\n", ret);
@ -738,6 +741,7 @@ pingpong_fail:
__exit void seemp_logk_cleanup(void)
{
dev_t devno = MKDEV(slogk_dev->major, slogk_dev->minor);
seemp_logk_detach();
cdev_del(&slogk_dev->cdev);

View File

@ -11,8 +11,8 @@
* GNU General Public License for more details.
*/
#ifndef __seemp_LOGK_H__
#define __seemp_LOGK_H__
#ifndef __SEEMP_LOGK_H__
#define __SEEMP_LOGK_H__
#define OBSERVER_VERSION 0x01
@ -46,13 +46,6 @@
#define FULL_BLOCKS (8 * 1024)
#define HALF_BLOCKS (4 * 1024)
#define TS_SIZE 20
#define BLK_SIZE 256
#define BLK_HDR_SIZE 64
#define BLK_MAX_MSG_SZ (BLK_SIZE - BLK_HDR_SIZE)
#define READER_NOT_READY 0
#define READER_READY 1
@ -134,24 +127,29 @@ struct seemp_logk_dev {
struct mutex lock;
};
#define BLK_SIZE 256
#define BLK_HDR_SIZE 68
#define TS_SIZE 20
#define BLK_MAX_MSG_SZ (BLK_SIZE - BLK_HDR_SIZE)
struct blk_payload {
__u32 api_id; /* event API id */
char msg[BLK_MAX_MSG_SZ]; /* event parameters */
} __packed;
struct seemp_logk_blk {
/*bits: 0->valid/invalid; 1-7: unused as of now!*/
__u8 status;
__u16 len;
__u8 version;
__s32 pid;
__s32 uid;
__s32 tid;
__s32 sec;
__s32 nsec;
char ts[TS_SIZE];
__u8 status; /* bits: 0->valid/invalid; 1-7: unused as of now! */
__u16 len; /* length of the payload */
__u8 version; /* version number */
__s32 pid; /* generating process's pid */
__s32 uid; /* generating process's uid - app specific */
__s32 tid; /* generating process's tid */
__s32 sec; /* seconds since Epoch */
__s32 nsec; /* nanoseconds */
char ts[TS_SIZE]; /* Time Stamp */
char appname[TASK_COMM_LEN];
/*
* HDR = 24 bytes + TS_SIZE(20) | TASK_COMM_LEN(16) (total = 60)
* msg = BLK_SIZE(256) - BLK_HDR_SIZE(60) = 196
*/
char msg[BLK_SIZE-BLK_HDR_SIZE]; /* the entry's payload */
};
struct blk_payload payload;
} __packed;
extern unsigned int kmalloc_flag;

View File

@ -15,6 +15,7 @@
#include "seemp_logk.h"
#include "seemp_ringbuf.h"
#include "seemp_event_encoder.h"
/*initial function no need to hold ring_lock*/
int ringbuf_init(struct seemp_logk_dev *sdev)
@ -70,6 +71,7 @@ int ringbuf_init(struct seemp_logk_dev *sdev)
/*no. of blocks ready for read*/
sdev->num_read_in_prog_blks = 0;
/*no. of blocks held by the reader to perform read*/
return 0;
}
@ -124,8 +126,12 @@ struct seemp_logk_blk *ringbuf_fetch_wr_block
return blk;
}
void ringbuf_finish_writer(struct seemp_logk_dev *sdev)
void ringbuf_finish_writer(struct seemp_logk_dev *sdev,
struct seemp_logk_blk *blk)
{
/* Encode seemp parameters in multi-threaded mode (before mutex lock) */
encode_seemp_params(blk);
/*
* finish writing...
* the calling process will no longer access this block.

View File

@ -11,8 +11,8 @@
* GNU General Public License for more details.
*/
#ifndef __seemp_RINGBUF_H__
#define __seemp_RINGBUF_H__
#ifndef __SEEMP_RINGBUF_H__
#define __SEEMP_RINGBUF_H__
/*
* This header exports pingpong's API
@ -21,7 +21,8 @@
int ringbuf_init(struct seemp_logk_dev *sdev);
struct seemp_logk_blk *ringbuf_fetch_wr_block
(struct seemp_logk_dev *sdev);
void ringbuf_finish_writer(struct seemp_logk_dev *sdev);
void ringbuf_finish_writer(struct seemp_logk_dev *sdev,
struct seemp_logk_blk *blk);
void ringbuf_cleanup(struct seemp_logk_dev *sdev);
int ringbuf_count_marked(struct seemp_logk_dev *sdev);

View File

@ -87,7 +87,8 @@
#include <linux/slab.h>
#include <linux/flex_array.h>
#include <linux/posix-timers.h>
#include <linux/qmp_sphinx_instrumentation.h>
#include <linux/seemp_api.h>
#include <linux/seemp_instrumentation.h>
#ifdef CONFIG_HARDWALL
#include <asm/hardwall.h>
#endif
@ -961,7 +962,7 @@ static ssize_t oom_adj_write(struct file *file, const char __user *buf,
goto out;
}
qmp_sphinx_logk_oom_adjust_write(task->pid,
seemp_logk_oom_adjust_write(task->pid,
task->cred->uid, oom_adj);
task_lock(task);
@ -1067,7 +1068,7 @@ static ssize_t oom_score_adj_write(struct file *file, const char __user *buf,
goto out;
}
qmp_sphinx_logk_oom_adjust_write(task->pid,
seemp_logk_oom_adjust_write(task->pid,
task->cred->uid, oom_score_adj);
task_lock(task);

View File

@ -0,0 +1,156 @@
/*
* Copyright (c) 2015, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __SEEMP_LOGK_STUB__
#define __SEEMP_LOGK_STUB__
#ifdef CONFIG_SEEMP_CORE
#include <linux/kernel.h>
#define MAX_BUF_SIZE 188
#define SEEMP_LOGK_API_SIZE sizeof(int)
/* Write: api_id + skip encoding byte + params */
#define SEEMP_LOGK_RECORD(api_id, format, ...) do { \
*((int *)(buf - SEEMP_LOGK_API_SIZE)) = api_id; \
snprintf(buf + 1, MAX_BUF_SIZE - 1, format, ##__VA_ARGS__); \
} while (0)
extern void *(*seemp_logk_kernel_begin)(char **buf);
extern void (*seemp_logk_kernel_end)(void *blck);
static inline void *seemp_setup_buf(char **buf)
{
void *blck;
if (seemp_logk_kernel_begin && seemp_logk_kernel_end) {
blck = seemp_logk_kernel_begin(buf);
if (!*buf) {
seemp_logk_kernel_end(blck);
return NULL;
}
} else {
return NULL;
}
return blck;
}
/*
* NOTE: only sendto is going to be instrumented
* since send sys call internally calls sendto
* with 2 extra parameters
*/
static inline void seemp_logk_sendto(int fd, void __user *buff, size_t len,
unsigned flags, struct sockaddr __user *addr, int addr_len)
{
char *buf = NULL;
void *blck = NULL;
/*sets up buf and blck correctly*/
blck = seemp_setup_buf(&buf);
if (!blck)
return;
/*fill the buf*/
SEEMP_LOGK_RECORD(SEEMP_API_kernel__sendto, "len=%u,fd=%d",
(unsigned int)len, fd);
seemp_logk_kernel_end(blck);
}
/*
* NOTE: only recvfrom is going to be instrumented
* since recv sys call internally calls recvfrom
* with 2 extra parameters
*/
static inline void seemp_logk_recvfrom(int fd, void __user *ubuf,
size_t size, unsigned flags, struct sockaddr __user *addr,
int __user *addr_len)
{
char *buf = NULL;
void *blck = NULL;
/*sets up buf and blck correctly*/
blck = seemp_setup_buf(&buf);
if (!blck)
return;
/*fill the buf*/
SEEMP_LOGK_RECORD(SEEMP_API_kernel__recvfrom, "size=%u,fd=%d",
(unsigned int)size, fd);
seemp_logk_kernel_end(blck);
}
static inline void seemp_logk_oom_adjust_write(pid_t pid,
uid_t uid, int oom_adj)
{
char *buf = NULL;
void *blck = NULL;
/*sets up buf and blck correctly*/
blck = seemp_setup_buf(&buf);
if (!blck)
return;
/*fill the buf*/
SEEMP_LOGK_RECORD(SEEMP_API_kernel__oom_adjust_write,
"app_uid=%d,app_pid=%d,oom_adj=%d",
uid, pid, oom_adj);
seemp_logk_kernel_end(blck);
}
static inline void seemp_logk_oom_score_adj_write(pid_t pid, uid_t uid,
int oom_adj_score)
{
char *buf = NULL;
void *blck = NULL;
/*sets up buf and blck correctly*/
blck = seemp_setup_buf(&buf);
if (!blck)
return;
/*fill the buf*/
snprintf(buf, MAX_BUF_SIZE,
"-1|kernel|oom_score_adj_write|app_uid=%d,app_pid=%d,oom_adj=%d|--end",
uid, pid, oom_adj_score);
seemp_logk_kernel_end(blck);
}
#else
static inline void seemp_logk_sendto(int fd, void __user *buff,
size_t len, unsigned flags, struct sockaddr __user *addr,
int addr_len)
{
}
static inline void seemp_logk_recvfrom
(int fd, void __user *ubuf, size_t size,
unsigned flags, struct sockaddr __user *addr,
int __user *addr_len)
{
}
static inline void seemp_logk_oom_adjust_write
(pid_t pid, kuid_t uid, int oom_adj)
{
}
static inline void seemp_logk_oom_score_adj_write
(pid_t pid, kuid_t uid, int oom_adj_score)
{
}
#endif
#endif

View File

@ -397,6 +397,8 @@ header-y += sctp.h
header-y += sdla.h
header-y += seccomp.h
header-y += securebits.h
header-y += seemp_api.h
header-y += seemp_param_id.h
header-y += selinux_netlink.h
header-y += sem.h
header-y += serial.h

View File

@ -0,0 +1,418 @@
#ifndef _SEEMP_API_H_
#define _SEEMP_API_H_
#define SEEMP_API_kernel__oom_adjust_write 0
#define SEEMP_API_kernel__sendto 1
#define SEEMP_API_kernel__recvfrom 2
#define SEEMP_API_View__onTouchEvent 3
#define SEEMP_API_View__onKeyDown 4
#define SEEMP_API_View__onKeyUp 5
#define SEEMP_API_View__onTrackBallEvent 6
#define SEEMP_API_PhoneNumberUtils__getDeviceSoftwareVersion 7
#define SEEMP_API_apS__get_ANDROID_ID_ 8
#define SEEMP_API_TelephonyManager__getDeviceId 9
#define SEEMP_API_TelephonyManager__getSimSerialNumber 10
#define SEEMP_API_TelephonyManager__getLine1Number 11
#define SEEMP_API_PhoneNumberUtils__getNumberFromIntent 12
#define SEEMP_API_Telephony__query 13
#define SEEMP_API_CallerInfo__getCallerId 14
#define SEEMP_API_CallerInfo__getCallerInfo 15
#define SEEMP_API_ContentResolver__query 16
#define SEEMP_API_AccountManagerService__getPassword 17
#define SEEMP_API_AccountManagerService__getUserData 18
#define SEEMP_API_AccountManagerService__addAccount 19
#define SEEMP_API_AccountManagerService__removeAccount 20
#define SEEMP_API_AccountManagerService__setPassword 21
#define SEEMP_API_AccountManagerService__clearPassword 22
#define SEEMP_API_AccountManagerService__setUserData 23
#define SEEMP_API_AccountManagerService__editProperties 24
#define SEEMP_API_AM__getPassword 25
#define SEEMP_API_AM__getUserData 26
#define SEEMP_API_AM__addAccountExplicitly 27
#define SEEMP_API_AM__removeAccount 28
#define SEEMP_API_AM__setPassword 29
#define SEEMP_API_AM__clearPassword 30
#define SEEMP_API_AM__setUserData 31
#define SEEMP_API_AM__addAccount 32
#define SEEMP_API_AM__editProperties 33
#define SEEMP_API_AM__doWork 34
#define SEEMP_API_Browser__addSearchUrl 35
#define SEEMP_API_Browser__canClearHistory 36
#define SEEMP_API_Browser__ClearHistory 37
#define SEEMP_API_Browser__deleteFromHistory 38
#define SEEMP_API_Browser__deleteHistoryTimeFrame 39
#define SEEMP_API_Browser__deleteHistoryWhere 40
#define SEEMP_API_Browser__getAllBookmarks 41
#define SEEMP_API_Browser__getAllVisitedUrls 42
#define SEEMP_API_Browser__getVisitedHistory 43
#define SEEMP_API_Browser__getVisitedLike 44
#define SEEMP_API_Browser__requestAllIcons 45
#define SEEMP_API_Browser__truncateHistory 46
#define SEEMP_API_Browser__updateVisitedHistory 47
#define SEEMP_API_Browser__clearSearches 48
#define SEEMP_API_WebIconDatabase__bulkRequestIconForPageUrl 49
#define SEEMP_API_ContentResolver__insert 50
#define SEEMP_API_CalendarContract__insert 51
#define SEEMP_API_CalendarContract__alarmExists 52
#define SEEMP_API_CalendarContract__findNextAlarmTime 53
#define SEEMP_API_CalendarContract__query 54
#define SEEMP_API_LocationManager___requestLocationUpdates 55
#define SEEMP_API_LocationManager__addGpsStatusListener 56
#define SEEMP_API_LocationManager__addNmeaListener 57
#define SEEMP_API_LocationManager__addProximityAlert 58
#define SEEMP_API_LocationManager__getBestProvider 59
#define SEEMP_API_LocationManager__getLastKnownLocation 60
#define SEEMP_API_LocationManager__getProvider 61
#define SEEMP_API_LocationManager__getProviders 62
#define SEEMP_API_LocationManager__isProviderEnabled 63
#define SEEMP_API_LocationManager__requestLocationUpdates 64
#define SEEMP_API_LocationManager__sendExtraCommand 65
#define SEEMP_API_TelephonyManager__getCellLocation 66
#define SEEMP_API_TelephonyManager__getNeighboringCellInfo 67
#define SEEMP_API_GeolocationService__registerForLocationUpdates 68
#define SEEMP_API_GeolocationService__setEnableGps 69
#define SEEMP_API_GeolocationService__start 70
#define SEEMP_API_WebChromeClient__onGeolocationPermissionsShowPrompt 71
#define SEEMP_API_WifiManager__getScanResults 72
#define SEEMP_API_abB__enable 73
#define SEEMP_API_abB__disable 74
#define SEEMP_API_abB__startDiscovery 75
#define SEEMP_API_abB__listenUsingInsecureRfcommWithServiceRecord 76
#define SEEMP_API_abB__listenUsingSecureRfcommWithServiceRecord 77
#define SEEMP_API_abB__getBondedDevices 78
#define SEEMP_API_abB__getRemoteDevice 79
#define SEEMP_API_abB__getState 80
#define SEEMP_API_abB__getProfileConnectionState 81
#define SEEMP_API_Camera__takePicture 82
#define SEEMP_API_Camera__setPreviewCallback 83
#define SEEMP_API_Camera__setPreviewCallbackWithBuffer 84
#define SEEMP_API_Camera__setOneShotPreviewCallback 85
#define SEEMP_API_MediaRecorder__start 86
#define SEEMP_API_MediaRecorder__stop 87
#define SEEMP_API_AudioRecord__startRecording 88
#define SEEMP_API_AudioRecord__start 89
#define SEEMP_API_AudioRecord__stop 90
#define SEEMP_API_SpeechRecognizer__startListening 91
#define SEEMP_API_at_SmsManager__sendDataMessage 92
#define SEEMP_API_at_SmsManager__sendMultipartTextMessage 93
#define SEEMP_API_at_SmsManager__sendTextMessage 94
#define SEEMP_API_at_gsm_SmsManager__sendDataMessage 95
#define SEEMP_API_at_gsm_SmsManager__sendMultipartTextMessage 96
#define SEEMP_API_at_gsm_SmsManager__sendTextMessage 97
#define SEEMP_API_at_SmsManager__copyMessageToIcc 98
#define SEEMP_API_at_SmsManager__deleteMessageFromIcc 99
#define SEEMP_API_at_SmsManager__updateMessageOnIcc 100
#define SEEMP_API_at_gsm_SmsManager__copyMessageToSim 101
#define SEEMP_API_at_gsm_SmsManager__deleteMessageFromSim 102
#define SEEMP_API_at_gsm_SmsManager__updateMessageOnSim 103
#define SEEMP_API_at_gsm_SmsManager__getAllMessagesFromSim 104
#define SEEMP_API_ah_SEL__onAccuracyChanged_ACCELEROMETER_ 105
#define SEEMP_API_ah_SEL__onSensorChanged_ACCELEROMETER_ 106
#define SEEMP_API_ah_SensorManager__registerListener 107
#define SEEMP_API_ASensorEventQueue__enableSensor 108
#define SEEMP_API_ContactsContract__getLookupUri 109
#define SEEMP_API_ContactsContract__lookupContact 110
#define SEEMP_API_ContactsContract__openContactPhotoInputStream 111
#define SEEMP_API_ContactsContract__getContactLookupUri 112
#define SEEMP_API_PackageManagerService__installPackage 113
#define SEEMP_API_TelephonyManager__getSubscriberId 114
#define SEEMP_API_URL__openConnection 115
#define SEEMP_API_AM__confirmCredentials 116
#define SEEMP_API_AM__invalidateAuthToken 117
#define SEEMP_API_AM__updateCredentials 118
#define SEEMP_API_AM__checkManageAccountsOrUseCredentialsPermissions 119
#define SEEMP_API_AM__checkManageAccountsPermission 120
#define SEEMP_API_AM__peekAuthToken 121
#define SEEMP_API_AM__setAuthToken 122
#define SEEMP_API_AM__checkAuthenticateAccountsPermission 123
#define SEEMP_API_ah_SEL__onAccuracyChanged_ORIENTATION_ 124
#define SEEMP_API_ah_SEL__onSensorChanged_ORIENTATION_ 125
#define SEEMP_API_apS__get_ACCELEROMETER_ROTATION_ 126
#define SEEMP_API_apS__get_USER_ROTATION_ 127
#define SEEMP_API_apS__get_ADB_ENABLED_ 128
#define SEEMP_API_apS__get_DEBUG_APP_ 129
#define SEEMP_API_apS__get_WAIT_FOR_DEBUGGER_ 130
#define SEEMP_API_apS__get_AIRPLANE_MODE_ON_ 131
#define SEEMP_API_apS__get_AIRPLANE_MODE_RADIOS_ 132
#define SEEMP_API_apS__get_ALARM_ALERT_ 133
#define SEEMP_API_apS__get_NEXT_ALARM_FORMATTED_ 134
#define SEEMP_API_apS__get_ALWAYS_FINISH_ACTIVITIES_ 135
#define SEEMP_API_apS__get_LOGGING_ID_ 136
#define SEEMP_API_apS__get_ANIMATOR_DURATION_SCALE_ 137
#define SEEMP_API_apS__get_WINDOW_ANIMATION_SCALE_ 138
#define SEEMP_API_apS__get_FONT_SCALE_ 139
#define SEEMP_API_apS__get_SCREEN_BRIGHTNESS_ 140
#define SEEMP_API_apS__get_SCREEN_BRIGHTNESS_MODE_ 141
#define SEEMP_API_apS__get_SCREEN_BRIGHTNESS_MODE_AUTOMATIC_ 142
#define SEEMP_API_apS__get_SCREEN_BRIGHTNESS_MODE_MANUAL_ 143
#define SEEMP_API_apS__get_SCREEN_OFF_TIMEOUT_ 144
#define SEEMP_API_apS__get_DIM_SCREEN_ 145
#define SEEMP_API_apS__get_TS_ANIMATION_SCALE_ 146
#define SEEMP_API_apS__get_STAY_ON_WHILE_PLUGGED_IN_ 147
#define SEEMP_API_apS__get_WALLPAPER_ACTIVITY_ 148
#define SEEMP_API_apS__get_SHOW_PROCESSES_ 149
#define SEEMP_API_apS__get_SHOW_WEB_SUGGESTIONS_ 150
#define SEEMP_API_apS__get_SHOW_GTALK_SERVICE_STATUS_ 151
#define SEEMP_API_apS__get_USE_GOOGLE_MAIL_ 152
#define SEEMP_API_apS__get_AUTO_TIME_ 153
#define SEEMP_API_apS__get_AUTO_TIME_ZONE_ 154
#define SEEMP_API_apS__get_DATE_FORMAT_ 155
#define SEEMP_API_apS__get_TIME_12_24_ 156
#define SEEMP_API_apS__get_BLUETOOTH_DISCOVERABILITY_ 157
#define SEEMP_API_apS__get_BLUETOOTH_DISCOVERABILITY_TIMEOUT_ 158
#define SEEMP_API_apS__get_BLUETOOTH_ON_ 159
#define SEEMP_API_apS__get_DEVICE_PROVISIONED_ 160
#define SEEMP_API_apS__get_SETUP_WIZARD_HAS_RUN_ 161
#define SEEMP_API_apS__get_DTMF_TONE_WHEN_DIALING_ 162
#define SEEMP_API_apS__get_END_BUTTON_BEHAVIOR_ 163
#define SEEMP_API_apS__get_RINGTONE_ 164
#define SEEMP_API_apS__get_MODE_RINGER_ 165
#define SEEMP_API_apS__get_INSTALL_NON_MARKET_APPS_ 166
#define SEEMP_API_apS__get_LOCATION_PROVIDERS_ALLOWED_ 167
#define SEEMP_API_apS__get_LOCK_PATTERN_ENABLED_ 168
#define SEEMP_API_apS__get_LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED_ 169
#define SEEMP_API_apS__get_LOCK_PATTERN_VISIBLE_ 170
#define SEEMP_API_apS__get_NETWORK_PREFERENCE_ 171
#define SEEMP_API_apS__get_DATA_ROAMING_ 172
#define SEEMP_API_apS__get_HTTP_PROXY_ 173
#define SEEMP_API_apS__get_PARENTAL_CONTROL_ENABLED_ 174
#define SEEMP_API_apS__get_PARENTAL_CONTROL_LAST_UPDATE_ 175
#define SEEMP_API_apS__get_PARENTAL_CONTROL_REDIRECT_URL_ 176
#define SEEMP_API_apS__get_RADIO_BLUETOOTH_ 177
#define SEEMP_API_apS__get_RADIO_CELL_ 178
#define SEEMP_API_apS__get_RADIO_NFC_ 179
#define SEEMP_API_apS__get_RADIO_WIFI_ 180
#define SEEMP_API_apS__get_SYS_PROP_SETTING_VERSION_ 181
#define SEEMP_API_apS__get_SETTINGS_CLASSNAME_ 182
#define SEEMP_API_apS__get_TEXT_AUTO_CAPS_ 183
#define SEEMP_API_apS__get_TEXT_AUTO_PUNCTUATE_ 184
#define SEEMP_API_apS__get_TEXT_AUTO_REPLACE_ 185
#define SEEMP_API_apS__get_TEXT_SHOW_PASSWORD_ 186
#define SEEMP_API_apS__get_USB_MASS_STORAGE_ENABLED_ 187
#define SEEMP_API_apS__get_VIBRATE_ON_ 188
#define SEEMP_API_apS__get_HAPTIC_FEEDBACK_ENABLED_ 189
#define SEEMP_API_apS__get_VOLUME_ALARM_ 190
#define SEEMP_API_apS__get_VOLUME_BLUETOOTH_SCO_ 191
#define SEEMP_API_apS__get_VOLUME_MUSIC_ 192
#define SEEMP_API_apS__get_VOLUME_NOTIFICATION_ 193
#define SEEMP_API_apS__get_VOLUME_RING_ 194
#define SEEMP_API_apS__get_VOLUME_SYSTEM_ 195
#define SEEMP_API_apS__get_VOLUME_VOICE_ 196
#define SEEMP_API_apS__get_SOUND_EFFECTS_ENABLED_ 197
#define SEEMP_API_apS__get_MODE_RINGER_STREAMS_AFFECTED_ 198
#define SEEMP_API_apS__get_MUTE_STREAMS_AFFECTED_ 199
#define SEEMP_API_apS__get_NOTIFICATION_SOUND_ 200
#define SEEMP_API_apS__get_APPEND_FOR_LAST_AUDIBLE_ 201
#define SEEMP_API_apS__get_WIFI_MAX_DHCP_RETRY_COUNT_ 202
#define SEEMP_API_apS__get_WIFI_MOBILE_DATA_TS_WAKELOCK_TIMEOUT_MS_ 203
#define SEEMP_API_apS__get_WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON_ 204
#define SEEMP_API_apS__get_WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY_ 205
#define SEEMP_API_apS__get_WIFI_NUM_OPEN_NETWORKS_KEPT_ 206
#define SEEMP_API_apS__get_WIFI_ON_ 207
#define SEEMP_API_apS__get_WIFI_SLEEP_POLICY_ 208
#define SEEMP_API_apS__get_WIFI_SLEEP_POLICY_DEFAULT_ 209
#define SEEMP_API_apS__get_WIFI_SLEEP_POLICY_NEVER_ 210
#define SEEMP_API_apS__get_WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED_ 211
#define SEEMP_API_apS__get_WIFI_STATIC_DNS1_ 212
#define SEEMP_API_apS__get_WIFI_STATIC_DNS2_ 213
#define SEEMP_API_apS__get_WIFI_STATIC_GATEWAY_ 214
#define SEEMP_API_apS__get_WIFI_STATIC_IP_ 215
#define SEEMP_API_apS__get_WIFI_STATIC_NETMASK_ 216
#define SEEMP_API_apS__get_WIFI_USE_STATIC_IP_ 217
#define SEEMP_API_apS__get_WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PR_ 218
#define SEEMP_API_apS__get_WIFI_WATCHDOG_AP_COUNT_ 219
#define SEEMP_API_apS__get_WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS_ 220
#define SEEMP_API_apS__get_WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED_ 221
#define SEEMP_API_apS__get_WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS_ 222
#define SEEMP_API_apS__get_WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT_ 223
#define SEEMP_API_apS__get_WIFI_WATCHDOG_MAX_AP_CHECKS_ 224
#define SEEMP_API_apS__get_WIFI_WATCHDOG_ON_ 225
#define SEEMP_API_apS__get_WIFI_WATCHDOG_PING_COUNT_ 226
#define SEEMP_API_apS__get_WIFI_WATCHDOG_PING_DELAY_MS_ 227
#define SEEMP_API_apS__get_WIFI_WATCHDOG_PING_TIMEOUT_MS_ 228
#define SEEMP_API_apS__put_ACCELEROMETER_ROTATION_ 229
#define SEEMP_API_apS__put_USER_ROTATION_ 230
#define SEEMP_API_apS__put_ADB_ENABLED_ 231
#define SEEMP_API_apS__put_DEBUG_APP_ 232
#define SEEMP_API_apS__put_WAIT_FOR_DEBUGGER_ 233
#define SEEMP_API_apS__put_AIRPLANE_MODE_ON_ 234
#define SEEMP_API_apS__put_AIRPLANE_MODE_RADIOS_ 235
#define SEEMP_API_apS__put_ALARM_ALERT_ 236
#define SEEMP_API_apS__put_NEXT_ALARM_FORMATTED_ 237
#define SEEMP_API_apS__put_ALWAYS_FINISH_ACTIVITIES_ 238
#define SEEMP_API_apS__put_ANDROID_ID_ 239
#define SEEMP_API_apS__put_LOGGING_ID_ 240
#define SEEMP_API_apS__put_ANIMATOR_DURATION_SCALE_ 241
#define SEEMP_API_apS__put_WINDOW_ANIMATION_SCALE_ 242
#define SEEMP_API_apS__put_FONT_SCALE_ 243
#define SEEMP_API_apS__put_SCREEN_BRIGHTNESS_ 244
#define SEEMP_API_apS__put_SCREEN_BRIGHTNESS_MODE_ 245
#define SEEMP_API_apS__put_SCREEN_BRIGHTNESS_MODE_AUTOMATIC_ 246
#define SEEMP_API_apS__put_SCREEN_BRIGHTNESS_MODE_MANUAL_ 247
#define SEEMP_API_apS__put_SCREEN_OFF_TIMEOUT_ 248
#define SEEMP_API_apS__put_DIM_SCREEN_ 249
#define SEEMP_API_apS__put_TS_ANIMATION_SCALE_ 250
#define SEEMP_API_apS__put_STAY_ON_WHILE_PLUGGED_IN_ 251
#define SEEMP_API_apS__put_WALLPAPER_ACTIVITY_ 252
#define SEEMP_API_apS__put_SHOW_PROCESSES_ 253
#define SEEMP_API_apS__put_SHOW_WEB_SUGGESTIONS_ 254
#define SEEMP_API_apS__put_SHOW_GTALK_SERVICE_STATUS_ 255
#define SEEMP_API_apS__put_USE_GOOGLE_MAIL_ 256
#define SEEMP_API_apS__put_AUTO_TIME_ 257
#define SEEMP_API_apS__put_AUTO_TIME_ZONE_ 258
#define SEEMP_API_apS__put_DATE_FORMAT_ 259
#define SEEMP_API_apS__put_TIME_12_24_ 260
#define SEEMP_API_apS__put_BLUETOOTH_DISCOVERABILITY_ 261
#define SEEMP_API_apS__put_BLUETOOTH_DISCOVERABILITY_TIMEOUT_ 262
#define SEEMP_API_apS__put_BLUETOOTH_ON_ 263
#define SEEMP_API_apS__put_DEVICE_PROVISIONED_ 264
#define SEEMP_API_apS__put_SETUP_WIZARD_HAS_RUN_ 265
#define SEEMP_API_apS__put_DTMF_TONE_WHEN_DIALING_ 266
#define SEEMP_API_apS__put_END_BUTTON_BEHAVIOR_ 267
#define SEEMP_API_apS__put_RINGTONE_ 268
#define SEEMP_API_apS__put_MODE_RINGER_ 269
#define SEEMP_API_apS__put_INSTALL_NON_MARKET_APPS_ 270
#define SEEMP_API_apS__put_LOCATION_PROVIDERS_ALLOWED_ 271
#define SEEMP_API_apS__put_LOCK_PATTERN_ENABLED_ 272
#define SEEMP_API_apS__put_LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED_ 273
#define SEEMP_API_apS__put_LOCK_PATTERN_VISIBLE_ 274
#define SEEMP_API_apS__put_NETWORK_PREFERENCE_ 275
#define SEEMP_API_apS__put_DATA_ROAMING_ 276
#define SEEMP_API_apS__put_HTTP_PROXY_ 277
#define SEEMP_API_apS__put_PARENTAL_CONTROL_ENABLED_ 278
#define SEEMP_API_apS__put_PARENTAL_CONTROL_LAST_UPDATE_ 279
#define SEEMP_API_apS__put_PARENTAL_CONTROL_REDIRECT_URL_ 280
#define SEEMP_API_apS__put_RADIO_BLUETOOTH_ 281
#define SEEMP_API_apS__put_RADIO_CELL_ 282
#define SEEMP_API_apS__put_RADIO_NFC_ 283
#define SEEMP_API_apS__put_RADIO_WIFI_ 284
#define SEEMP_API_apS__put_SYS_PROP_SETTING_VERSION_ 285
#define SEEMP_API_apS__put_SETTINGS_CLASSNAME_ 286
#define SEEMP_API_apS__put_TEXT_AUTO_CAPS_ 287
#define SEEMP_API_apS__put_TEXT_AUTO_PUNCTUATE_ 288
#define SEEMP_API_apS__put_TEXT_AUTO_REPLACE_ 289
#define SEEMP_API_apS__put_TEXT_SHOW_PASSWORD_ 290
#define SEEMP_API_apS__put_USB_MASS_STORAGE_ENABLED_ 291
#define SEEMP_API_apS__put_VIBRATE_ON_ 292
#define SEEMP_API_apS__put_HAPTIC_FEEDBACK_ENABLED_ 293
#define SEEMP_API_apS__put_VOLUME_ALARM_ 294
#define SEEMP_API_apS__put_VOLUME_BLUETOOTH_SCO_ 295
#define SEEMP_API_apS__put_VOLUME_MUSIC_ 296
#define SEEMP_API_apS__put_VOLUME_NOTIFICATION_ 297
#define SEEMP_API_apS__put_VOLUME_RING_ 298
#define SEEMP_API_apS__put_VOLUME_SYSTEM_ 299
#define SEEMP_API_apS__put_VOLUME_VOICE_ 300
#define SEEMP_API_apS__put_SOUND_EFFECTS_ENABLED_ 301
#define SEEMP_API_apS__put_MODE_RINGER_STREAMS_AFFECTED_ 302
#define SEEMP_API_apS__put_MUTE_STREAMS_AFFECTED_ 303
#define SEEMP_API_apS__put_NOTIFICATION_SOUND_ 304
#define SEEMP_API_apS__put_APPEND_FOR_LAST_AUDIBLE_ 305
#define SEEMP_API_apS__put_WIFI_MAX_DHCP_RETRY_COUNT_ 306
#define SEEMP_API_apS__put_WIFI_MOBILE_DATA_TS_WAKELOCK_TIMEOUT_MS_ 307
#define SEEMP_API_apS__put_WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON_ 308
#define SEEMP_API_apS__put_WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY_ 309
#define SEEMP_API_apS__put_WIFI_NUM_OPEN_NETWORKS_KEPT_ 310
#define SEEMP_API_apS__put_WIFI_ON_ 311
#define SEEMP_API_apS__put_WIFI_SLEEP_POLICY_ 312
#define SEEMP_API_apS__put_WIFI_SLEEP_POLICY_DEFAULT_ 313
#define SEEMP_API_apS__put_WIFI_SLEEP_POLICY_NEVER_ 314
#define SEEMP_API_apS__put_WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED_ 315
#define SEEMP_API_apS__put_WIFI_STATIC_DNS1_ 316
#define SEEMP_API_apS__put_WIFI_STATIC_DNS2_ 317
#define SEEMP_API_apS__put_WIFI_STATIC_GATEWAY_ 318
#define SEEMP_API_apS__put_WIFI_STATIC_IP_ 319
#define SEEMP_API_apS__put_WIFI_STATIC_NETMASK_ 320
#define SEEMP_API_apS__put_WIFI_USE_STATIC_IP_ 321
#define SEEMP_API_apS__put_WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PR_ 322
#define SEEMP_API_apS__put_WIFI_WATCHDOG_AP_COUNT_ 323
#define SEEMP_API_apS__put_WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS_ 324
#define SEEMP_API_apS__put_WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED_ 325
#define SEEMP_API_apS__put_WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS_ 326
#define SEEMP_API_apS__put_WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT_ 327
#define SEEMP_API_apS__put_WIFI_WATCHDOG_MAX_AP_CHECKS_ 328
#define SEEMP_API_apS__put_WIFI_WATCHDOG_ON_ 329
#define SEEMP_API_apS__put_WIFI_WATCHDOG_PING_COUNT_ 330
#define SEEMP_API_apS__put_WIFI_WATCHDOG_PING_DELAY_MS_ 331
#define SEEMP_API_apS__put_WIFI_WATCHDOG_PING_TIMEOUT_MS_ 332
#define SEEMP_API_Poll__setCumulativeWifiRxMBytes 333
#define SEEMP_API_Poll__setInstantaneousWifiRxMBytes 334
#define SEEMP_API_Poll__setCumulativeWifiRxPackets 335
#define SEEMP_API_Poll__setInstantaneousWifiRxPackets 336
#define SEEMP_API_Poll__setCumulativeWifiTxMBytes 337
#define SEEMP_API_Poll__setInstantaneousWifiTxMBytes 338
#define SEEMP_API_Poll__setCumulativeWifiTxPackets 339
#define SEEMP_API_Poll__setInstantaneousWifiTxPackets 340
#define SEEMP_API_Poll__setCumulativeWifiRxTcpMBytes 341
#define SEEMP_API_Poll__setInstantaneousWifiRxTcpMBytes 342
#define SEEMP_API_Poll__setCumulativeWifiRxTcpPackets 343
#define SEEMP_API_Poll__setInstantaneousWifiRxTcpPackets 344
#define SEEMP_API_Poll__setCumulativeWifiRxUdpMBytes 345
#define SEEMP_API_Poll__setInstantaneousWifiRxUdpMBytes 346
#define SEEMP_API_Poll__setCumulativeWifiRxUdpPackets 347
#define SEEMP_API_Poll__setInstantaneousWifiRxUdpPackets 348
#define SEEMP_API_Poll__setCumulativeWifiRxOtherMBytes 349
#define SEEMP_API_Poll__setInstantaneousWifiRxOtherMBytes 350
#define SEEMP_API_Poll__setCumulativeWifiRxOtherPackets 351
#define SEEMP_API_Poll__setInstantaneousWifiRxOtherPackets 352
#define SEEMP_API_Poll__setCumulativeWifiTxTcpMBytes 353
#define SEEMP_API_Poll__setInstantaneousWifiTxTcpMBytes 354
#define SEEMP_API_Poll__setCumulativeWifiTxTcpPackets 355
#define SEEMP_API_Poll__setInstantaneousWifiTxTcpPackets 356
#define SEEMP_API_Poll__setCumulativeWifiTxUdpMBytes 357
#define SEEMP_API_Poll__setInstantaneousWifiTxUdpMBytes 358
#define SEEMP_API_Poll__setCumulativeWifiTxUdpPackets 359
#define SEEMP_API_Poll__setInstantaneousWifiTxUdpPackets 360
#define SEEMP_API_Poll__setCumulativeWifiTxOtherMBytes 361
#define SEEMP_API_Poll__setInstantaneousWifiTxOtherMBytes 362
#define SEEMP_API_Poll__setCumulativeWifiTxOtherPackets 363
#define SEEMP_API_Poll__setInstantaneousWifiTxOtherPackets 364
#define SEEMP_API_Poll__setCumulativeMobileRxMBytes 365
#define SEEMP_API_Poll__setInstantaneousMobileRxMBytes 366
#define SEEMP_API_Poll__setCumulativeMobileRxPackets 367
#define SEEMP_API_Poll__setInstantaneousMobileRxPackets 368
#define SEEMP_API_Poll__setCumulativeMobileTxMBytes 369
#define SEEMP_API_Poll__setInstantaneousMobileTxMBytes 370
#define SEEMP_API_Poll__setCumulativeMobileTxPackets 371
#define SEEMP_API_Poll__setInstantaneousMobileTxPackets 372
#define SEEMP_API_Poll__setCumulativeMobileRxTcpMBytes 373
#define SEEMP_API_Poll__setInstantaneousMobileRxTcpMBytes 374
#define SEEMP_API_Poll__setCumulativeMobileRxTcpPackets 375
#define SEEMP_API_Poll__setInstantaneousMobileRxTcpPackets 376
#define SEEMP_API_Poll__setCumulativeMobileRxUdpMBytes 377
#define SEEMP_API_Poll__setInstantaneousMobileRxUdpMBytes 378
#define SEEMP_API_Poll__setCumulativeMobileRxUdpPackets 379
#define SEEMP_API_Poll__setInstantaneousMobileRxUdpPackets 380
#define SEEMP_API_Poll__setCumulativeMobileRxOtherMBytes 381
#define SEEMP_API_Poll__setInstantaneousMobileRxOtherMBytes 382
#define SEEMP_API_Poll__setCumulativeMobileRxOtherPackets 383
#define SEEMP_API_Poll__setInstantaneousMobileRxOtherPackets 384
#define SEEMP_API_Poll__setCumulativeMobileTxTcpMBytes 385
#define SEEMP_API_Poll__setInstantaneousMobileTxTcpMBytes 386
#define SEEMP_API_Poll__setCumulativeMobileTxTcpPackets 387
#define SEEMP_API_Poll__setInstantaneousMobileTxTcpPackets 388
#define SEEMP_API_Poll__setCumulativeMobileTxUdpMBytes 389
#define SEEMP_API_Poll__setInstantaneousMobileTxUdpMBytes 390
#define SEEMP_API_Poll__setCumulativeMobileTxUdpPackets 391
#define SEEMP_API_Poll__setInstantaneousMobileTxUdpPackets 392
#define SEEMP_API_Poll__setCumulativeMobileTxOtherMBytes 393
#define SEEMP_API_Poll__setInstantaneousMobileTxOtherMBytes 394
#define SEEMP_API_Poll__setCumulativeMobileTxOtherPackets 395
#define SEEMP_API_Poll__setInstantaneousMobileTxOtherPackets 396
#define SEEMP_API_Poll__setNumSockets 397
#define SEEMP_API_Poll__setNumTcpStateListen 398
#define SEEMP_API_Poll__setNumTcpStateEstablished 399
#define SEEMP_API_Poll__setNumLocalIp 400
#define SEEMP_API_Poll__setNumLocalPort 401
#define SEEMP_API_Poll__setNumRemoteIp 402
#define SEEMP_API_Poll__setNumRemotePort 403
#define SEEMP_API_Poll__setNumRemoteTuple 404
#define SEEMP_API_Poll__setNumInode 405
#define SEEMP_API_Instrumentation__startActivitySync 406
#define SEEMP_API_Instrumentation__execStartActivity 407
#define SEEMP_API_Instrumentation__execStartActivitiesAsUser 408
#define SEEMP_API_Instrumentation__execStartActivityAsCaller 409
#define SEEMP_API_Instrumentation__execStartActivityFromAppTask 410
#define SEEMP_API_ah_SystemSensorManager__registerListenerImpl 411
#define SEEMP_API_ah_SystemSensorManager__unregisterListenerImpl 412
#endif /* _SEEMP_API_H_ */

View File

@ -0,0 +1,70 @@
#ifndef _PARAM_ID_H_
#define _PARAM_ID_H_
#define PARAM_ID_LEN 0
#define PARAM_ID_OOM_ADJ 1
#define PARAM_ID_APP_PID 2
#define PARAM_ID_VALUE 3
#define PARAM_ID_RATE 4
#define PARAM_ID_SENSOR 5
#define PARAM_ID_SIZE 6
#define PARAM_ID_FD 7
#define NUM_PARAM_IDS 8
#ifndef PROVIDE_PARAM_ID
int param_id_index(const char *param, const char *end);
const char *get_param_id_name(int id);
#else
int param_id_index(const char *param, const char *end)
{
int id = -1;
int len = ((end != NULL) ? (end - param) : (int)strlen(param));
/**/ if ((len == 3) && !memcmp(param, "len", 3))
id = 0;
else if ((len == 7) && !memcmp(param, "oom_adj", 7))
id = 1;
else if ((len == 7) && !memcmp(param, "app_pid", 7))
id = 2;
else if ((len == 5) && !memcmp(param, "value", 5))
id = 3;
else if ((len == 4) && !memcmp(param, "rate", 4))
id = 4;
else if ((len == 6) && !memcmp(param, "sensor", 6))
id = 5;
else if ((len == 4) && !memcmp(param, "size", 4))
id = 6;
else if ((len == 2) && !memcmp(param, "fd", 2))
id = 7;
return id;
}
const char *get_param_id_name(int id)
{
const char *name = "?";
switch (id) {
case 0:
name = "len"; break;
case 1:
name = "oom_adj"; break;
case 2:
name = "app_pid"; break;
case 3:
name = "value"; break;
case 4:
name = "rate"; break;
case 5:
name = "sensor"; break;
case 6:
name = "size"; break;
case 7:
name = "fd"; break;
}
return name;
}
#endif /* PROVIDE_PARAM_ID */
#endif /* _PARAM_ID_H_ */

View File

@ -88,7 +88,8 @@
#include <linux/magic.h>
#include <linux/slab.h>
#include <linux/xattr.h>
#include <linux/qmp_sphinx_instrumentation.h>
#include <linux/seemp_api.h>
#include <linux/seemp_instrumentation.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
@ -1793,7 +1794,7 @@ SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
struct iovec iov;
int fput_needed;
qmp_sphinx_logk_sendto(fd, buff, len, flags, addr, addr_len);
seemp_logk_sendto(fd, buff, len, flags, addr, addr_len);
if (len > INT_MAX)
len = INT_MAX;
@ -1854,7 +1855,7 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
int err, err2;
int fput_needed;
qmp_sphinx_logk_recvfrom(fd, ubuf, size, flags, addr, addr_len);
seemp_logk_recvfrom(fd, ubuf, size, flags, addr, addr_len);
if (size > INT_MAX)
size = INT_MAX;