begin working on relf component
This commit is contained in:
parent
a39999e134
commit
b2015a0d8a
9 changed files with 85 additions and 2 deletions
2
Makefile
2
Makefile
|
|
@ -28,7 +28,7 @@ export MAKE
|
|||
export PYTHON
|
||||
|
||||
# order matters here, build libraries first!
|
||||
TARGETS = rtdisasm rtdisasm_test dummy_target blackjack
|
||||
TARGETS = rtdisasm rtdisasm_test relf relf_test dummy_target blackjack
|
||||
|
||||
.PHONY: $(TARGETS) debug clean
|
||||
|
||||
|
|
|
|||
|
|
@ -15,3 +15,7 @@ Hijacks runtime process in order to inject shared objects.
|
|||
### rtdisasm
|
||||
|
||||
KISS robust runtime "disassembler". Used to analyze instructions encoded sizes and find desired instructions for trampolines. No need to bloat it with full-blown disassembler logic like other projects do - one big lookup table is enough for such purposes.
|
||||
|
||||
### relf
|
||||
|
||||
Instrument to parse and analyze ELF shared objects. Primary goal is to find symbols and their offsets, so blackjack could link them in runtime.
|
||||
|
|
|
|||
26
src/relf/Makefile
Normal file
26
src/relf/Makefile
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
NAME = relf
|
||||
|
||||
CFLAGS = -Wall -I$(INC_DIR)
|
||||
ASFLAGS =
|
||||
LDFLAGS = -z noexecstack
|
||||
|
||||
SRC = relf.c
|
||||
OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRC))))
|
||||
DEPS = relf.h
|
||||
|
||||
$(OBJ_DIR)/%.o: %.c
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
.PHONY: all clean debug
|
||||
|
||||
all: $(OBJ) $(DEPS)
|
||||
$(AR) -crs $(BIN_DIR)/lib$(NAME).a $(OBJ)
|
||||
|
||||
debug: CFLAGS += -DDEBUG -g
|
||||
debug: LDFLAGS += -g
|
||||
debug: ASFLAGS += -g
|
||||
debug: all
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*
|
||||
1
src/relf/relf.c
Normal file
1
src/relf/relf.c
Normal file
|
|
@ -0,0 +1 @@
|
|||
#include "relf/relf.h"
|
||||
4
src/relf/relf.h
Normal file
4
src/relf/relf.h
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
#ifndef __RELF_H
|
||||
#define __RELF_H
|
||||
|
||||
#endif
|
||||
31
src/relf_test/Makefile
Normal file
31
src/relf_test/Makefile
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
NAME = relf_test
|
||||
|
||||
CFLAGS = -Wall -I$(INC_DIR)
|
||||
ASFLAGS =
|
||||
LDFLAGS = -z noexecstack
|
||||
|
||||
SRC = relf_test.c relf_dummy.c
|
||||
OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRC))))
|
||||
DEPS =
|
||||
|
||||
$(OBJ_DIR)/%.o: %.c
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/%.o: %.s
|
||||
@mkdir -p $(OBJ_DIR)
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
.PHONY: all clean debug
|
||||
|
||||
all: $(OBJ) $(DEPS)
|
||||
$(CC) $(LDFLAGS) -shared -o $(BIN_DIR)/relf_dummy.so obj/relf_dummy.o
|
||||
$(CC) $(LDFLAGS) -o $(BIN_DIR)/relf_test obj/relf_test.o $(LIB_DIR)/librelf.a
|
||||
|
||||
debug: CFLAGS += -DDEBUG -g
|
||||
debug: LDFLAGS += -g
|
||||
debug: ASFLAGS += -g
|
||||
debug: all
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*
|
||||
9
src/relf_test/relf_dummy.c
Normal file
9
src/relf_test/relf_dummy.c
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#include <stdio.h>
|
||||
|
||||
volatile int dummy_symbol1;
|
||||
volatile int dummy_symbol2;
|
||||
|
||||
void dummy_function1()
|
||||
{
|
||||
printf("hello from dummy_function1\n");
|
||||
}
|
||||
8
src/relf_test/relf_test.c
Normal file
8
src/relf_test/relf_test.c
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#include "relf/relf.h"
|
||||
#include <stdio.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("relf_test\n");
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@ NAME = rtdisasm
|
|||
|
||||
CFLAGS = -Wall -I$(INC_DIR)
|
||||
ASFLAGS =
|
||||
LDFLAGS = -z noexecstack -lcap
|
||||
LDFLAGS = -z noexecstack
|
||||
|
||||
SRC = rtdisasm.c
|
||||
OBJ := $(addprefix $(OBJ_DIR)/,$(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRC))))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue