1
1
# Set this variable to point to your SDK directory
2
2
IDA_SDK =../../
3
3
4
- SDKVER =$(shell pwd | grep -o -E "idasdk[0-9]{2,3}" | cut -c 7- | sed 's/\(.\) \(.\)/\1\.\2/')
4
+ SDKVER =$(shell pwd | grep -o -E "idasdk[0-9]{2,3}" | cut -c 7-)
5
+ IDAVER =$(shell pwd | grep -o -E "idasdk[0-9]{2,3}" | cut -c 7- | sed 's/\(.\) \(.\)/\1\.\2/')
6
+ IDAVER_MAJOR =$(shell pwd | grep -o -E "idasdk[0-9]{2,3}" | cut -c 7)
5
7
6
8
PLATFORM =$(shell uname | cut -f 1 -d _)
7
- BIN =$(shell which idaq 2>/dev/null)
8
- ifeq ($(strip $(BIN ) ) ,)
9
- BIN =$(shell which idal 2>/dev/null)
10
- ifeq ($(strip $(BIN ) ) ,)
11
- BIN =$(HOME ) /ida/idal
12
- endif
13
- endif
14
-
15
- ifneq "$(PLATFORM ) " "MINGW32"
16
- IDA =$(dir $(BIN ) )
17
- endif
18
9
19
10
# Set this variable to the desired name of your compiled plugin
20
11
PROC =sk3wldbg_user
21
12
22
- ifeq "$(PLATFORM ) " "MINGW32"
23
- PLATFORM_CFLAGS =-D__NT__ -D__IDP__ -DWIN32 -Os -fno-rtti
24
- PLATFORM_LDFLAGS =-shared -s
25
- LIBDIR32 =$(shell find ../../ -type d | grep -E "(lib|lib/) gcc.w32")
26
- ifeq ($(strip $(LIBDIR32 ) ) ,)
27
- LIBDIR32 =../../lib/x86_win_gcc_32
28
- IDALIB32 =$(LIBDIR32 ) /ida.a
29
- endif
30
- LIBDIR64 =$(shell find ../../ -type d | grep -E "(lib|lib/) gcc.w64")
31
- ifeq ($(strip $(LIBDIR64 ) ) ,)
32
- LIBDIR64 =../../lib/x86_win_gcc_64
33
- IDALIB64 =$(LIBDIR64 ) /ida.a
34
- endif
35
- PLUGIN_EXT32 =.plw
36
- PLUGIN_EXT64 =.p64
37
-
38
- else ifeq "$(PLATFORM)" "Linux"
39
- IDA =/opt/ida-$(SDKVER )
13
+ ifeq "$(PLATFORM ) " "Linux"
14
+ IDA =/opt/ida-$(IDAVER )
40
15
HAVE_IDA64 =$(shell if [ -f $(IDA ) /libida64.so ]; then echo -n yes; fi)
41
16
PLATFORM_CFLAGS =-D__LINUX__
42
17
PLATFORM_LDFLAGS =-shared -s
43
18
IDADIR =-L$(IDA )
19
+
20
+ ifeq "$(IDAVER_MAJOR ) " "6"
44
21
PLUGIN_EXT32 =.plx
45
22
PLUGIN_EXT64 =.plx64
23
+ else
24
+ PLUGIN_EXT32 =.so
25
+ PLUGIN_EXT64 =64.so
26
+ endif
46
27
47
28
IDALIB32 =-lida
48
29
IDALIB64 =-lida64
49
30
50
31
else ifeq "$(PLATFORM)" "Darwin"
51
- IDAHOME =/Applications/IDA Pro $(SDKVER )
32
+
33
+ IDAHOME =/Applications/IDA Pro $(IDAVER )
34
+
35
+ ifeq "$(IDAVER_MAJOR ) " "6"
52
36
IDA =$(shell dirname "`find "$(IDAHOME ) " -name idaq | tail -n 1`")
37
+ PLUGIN_EXT32 =.pmc
38
+ PLUGIN_EXT64 =.pmc64
39
+ else
40
+ IDA =$(shell dirname "`find "$(IDAHOME ) " -name ida | tail -n 1`")
41
+ PLUGIN_EXT32 =.dylib
42
+ PLUGIN_EXT64 =64.dylib
43
+ endif
44
+
53
45
HAVE_IDA64 =$(shell find "$(IDA ) " -name libida64.dylib -exec echo -n yes \;)
54
46
PLATFORM_CFLAGS =-D__MAC__
55
47
PLATFORM_LDFLAGS =-dynamiclib
56
48
IDADIR =-L"$(IDA ) "
57
- PLUGIN_EXT32 =.pmc
58
- PLUGIN_EXT64 =.pmc64
49
+
59
50
IDALIB32 =-lida
60
51
IDALIB64 =-lida64
61
52
endif
62
53
63
- # Platform specific compiler flags
64
- CFLAGS =-Wextra -Os $(PLATFORM_CFLAGS ) -m32
65
-
66
- # Platform specific ld flags
54
+ ifeq "$(IDAVER_MAJOR ) " "6"
55
+ CFLAGS =-Wextra -Os $(PLATFORM_CFLAGS ) -m32 -fPIC
67
56
LDFLAGS =$(PLATFORM_LDFLAGS ) -m32
57
+ else
58
+ CFLAGS =-Wextra -Os $(PLATFORM_CFLAGS ) -D__X64__ -m64 -fPIC
59
+ LDFLAGS =$(PLATFORM_LDFLAGS ) -m64
60
+ endif
68
61
69
62
# specify any additional libraries that you may need
70
63
EXTRALIBS =-lunicorn
@@ -81,18 +74,31 @@ OUTDIR=$(IDA_SDK)bin/plugins/
81
74
82
75
SRCS =sk3wldbg.cpp sk3wldbg_arm.cpp sk3wldbg_m68k.cpp \
83
76
sk3wldbg_mips.cpp sk3wldbg_plugin.cpp sk3wldbg_ppc.cpp \
84
- sk3wldbg_sparc.cpp sk3wldbg_x86.cpp loader.cpp mem_mgr.cpp
77
+ sk3wldbg_sparc.cpp sk3wldbg_x86.cpp loader.cpp mem_mgr.cpp \
78
+ idc_funcs.cpp
85
79
86
80
BINARY32 =$(OUTDIR )$(PROC )$(PLUGIN_EXT32 )
87
81
BINARY64 =$(OUTDIR )$(PROC )$(PLUGIN_EXT64 )
88
82
83
+ ifdef HAVE_IDA64
84
+
89
85
all : $(OUTDIR ) $(BINARY32 ) $(BINARY64 )
90
86
91
87
clean :
92
88
-@rm * .o
93
89
-@rm $(BINARY32 )
94
90
-@rm $(BINARY64 )
95
91
92
+ else
93
+
94
+ all : $(OUTDIR ) $(BINARY32 )
95
+
96
+ clean :
97
+ -@rm * .o
98
+ -@rm $(BINARY32 )
99
+
100
+ endif
101
+
96
102
$(OUTDIR ) :
97
103
-@mkdir -p $(OUTDIR )
98
104
@@ -107,22 +113,14 @@ INC=-I$(IDA_SDK)include/ -I./include/
107
113
108
114
LD =g++
109
115
110
- ifdef X64
111
-
112
- % .o : % .cpp
113
- $(CC ) -c $(CFLAGS ) -D__X64__ $(INC ) $< -o $@
114
-
115
- $(BINARY64 ) : $(SRCS )
116
- $(LD ) $(LDFLAGS ) -o $@ $(CFLAGS ) -D__X64__ $(SRCS ) $(INC ) $(IDADIR ) $(IDALIB64 ) $(EXTRALIBS )
117
-
118
- else
119
-
120
116
% .o : % .cpp
121
117
$(CC ) -c $(CFLAGS ) $(INC ) $< -o $@
122
118
123
119
$(BINARY32 ) : $(SRCS )
124
120
$(LD ) $(LDFLAGS ) -o $@ $(CFLAGS ) $(SRCS ) $(INC ) $(IDADIR ) $(IDALIB32 ) $(EXTRALIBS )
125
121
122
+ ifdef HAVE_IDA64
123
+
126
124
$(BINARY64 ) : $(SRCS )
127
125
$(LD ) $(LDFLAGS ) -o $@ -D__EA64__ $(CFLAGS ) $(SRCS ) $(INC ) $(IDADIR ) $(IDALIB64 ) $(EXTRALIBS )
128
126
0 commit comments