Skip to content

Commit 123641f

Browse files
修改最大HOOk数量
1 parent 1f2a4dd commit 123641f

File tree

4 files changed

+15
-5
lines changed

4 files changed

+15
-5
lines changed

kernel_trace.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include "kernel_trace.h"
1313

1414
KPM_NAME("kernel_trace");
15-
KPM_VERSION("4.0.0");
15+
KPM_VERSION("4.5.0");
1616
KPM_LICENSE("GPL v2");
1717
KPM_AUTHOR("Test");
1818
KPM_DESCRIPTION("use uprobe trace some fun in kpm");
@@ -55,6 +55,11 @@ void before_copy_insn(hook_fargs5_t *args, void *udata){
5555
if(ins_info){
5656
memcpy((void *)args->arg2,ins_info->value,INS_LEN);
5757
// logkd("+Test-Log+ offset:%lx,fix ins:%x %x %x %x\n",offset,ins_info->value[0],ins_info->value[1],ins_info->value[2],ins_info->value[3]);
58+
59+
rb_erase(&ins_info->node,&fix_ins_tree);
60+
kfree(ins_info->value);
61+
kfree(ins_info);
62+
5863
args->ret = 0;
5964
args->skip_origin = 1;
6065
}
@@ -210,7 +215,7 @@ static int trace_handler(struct uprobe_consumer *self, struct mpt_regs *regs){
210215

211216
target_out:
212217
// logkd("+Test-Log+ fun_name:%s,fun_offset:0x%llx calling\n",tfun->value,fun_offset);
213-
int trace_printk_ret = trace_printk(_THIS_IP_,"+Test-Log+ fun_name:%s,fun_offset:0x%llx calling\n",tfun->value,fun_offset);
218+
int trace_printk_ret = trace_printk(0,"+Test-Log+ fun_name:%s,fun_offset:0x%llx calling\n",tfun->value,fun_offset);
214219
if(unlikely(trace_printk_ret<0)){
215220
logke("+Test-Log+ trace_printk error\n");
216221
}

kernel_trace.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "uprobe_trace.h"
44
#include "mrbtree.h"
55

6-
#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
6+
//#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
77
#define MAX_PATH_LEN 300
88
#define MAX_FUN_NAME 150
99
#define INS_LEN 4

uprobe_trace.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#define TRACE_FLAG 511
2-
#define MAX_HOOK_NUM 1000
2+
#define MAX_HOOK_NUM 10000
33
#define SET_TRACE_SUCCESS 1000
44
#define SET_TRACE_ERROR 1001
55

user/uprobe_trace_user.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44

55
#define TRACE_FLAG 511
6-
#define MAX_HOOK_NUM 1000
6+
#define MAX_HOOK_NUM 10000
77
#define SET_TRACE_SUCCESS 1000
88
#define SET_TRACE_ERROR 1001
99

@@ -52,4 +52,9 @@ int set_fun_info(unsigned long uprobe_offset,unsigned long fun_offset,char *fun_
5252
int clear_all_uprobes(){
5353
int ret = syscall(__NR_mincore,0,TRACE_FLAG+CLEAR_UPROBE,"");
5454
return ret;
55+
}
56+
57+
int set_fun_ins(unsigned long uprobe_offset,char *fix_insn){
58+
int fix_insn_ret = syscall(__NR_mincore,uprobe_offset,TRACE_FLAG+FIX_ORI_INS,fix_insn);
59+
return fix_insn_ret;
5560
}

0 commit comments

Comments
 (0)