-
Notifications
You must be signed in to change notification settings - Fork 18
/
ezinject_injcode_util.c
46 lines (41 loc) · 1.71 KB
/
ezinject_injcode_util.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
* Copyright (C) 2021 Stefano Moioli <smxdev4@gmail.com>
* This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
* Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
* 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
void PLAPI inj_dchar(struct injcode_ctx *ctx, char ch){
#ifdef DEBUG
//pl:x\n\0
volatile uint64_t str = str64(0x706C3A0000000000 | (((uint64_t)ch << 32) & 0xFF00000000));
PCALL(ctx, inj_puts, (char *)&str);
#endif
}
void PLAPI *inj_memset(struct injcode_ctx *ctx, void *s, int c, size_t n){
UNUSED(ctx);
volatile unsigned char* p=s;
while(n--){
*p++ = (unsigned char)c;
}
return s;
}
#ifdef EZ_ARCH_ARM
INLINE void inj_cacheflush(struct injcode_bearing *br, void *from, void *to){
br->libc_syscall(__ARM_NR_cacheflush, from, to, 0);
}
#else
INLINE void inj_cacheflush(struct injcode_bearing *br, void *from, void *to){
UNUSED(br);
UNUSED(from);
UNUSED(to);
}
#endif
void PLAPI inj_dbgptr(struct injcode_ctx *ctx, void *ptr){
#ifdef DEBUG
char buf[(sizeof(uintptr_t) * 2) + 1];
itoa16((uintptr_t)ptr, buf);
PCALL(ctx, inj_puts, buf);
#endif
}