Skip to content

Commit 81911cc

Browse files
committedOct 2, 2017
Fix IDA 7.0 related build issues, update platform binaires
1 parent 9752cc0 commit 81911cc

40 files changed

+287
-107
lines changed
 

‎Makefile

+46-48
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,63 @@
11
#Set this variable to point to your SDK directory
22
IDA_SDK=../../
33

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)
57

68
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
189

1910
#Set this variable to the desired name of your compiled plugin
2011
PROC=sk3wldbg_user
2112

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)
4015
HAVE_IDA64=$(shell if [ -f $(IDA)/libida64.so ]; then echo -n yes; fi)
4116
PLATFORM_CFLAGS=-D__LINUX__
4217
PLATFORM_LDFLAGS=-shared -s
4318
IDADIR=-L$(IDA)
19+
20+
ifeq "$(IDAVER_MAJOR)" "6"
4421
PLUGIN_EXT32=.plx
4522
PLUGIN_EXT64=.plx64
23+
else
24+
PLUGIN_EXT32=.so
25+
PLUGIN_EXT64=64.so
26+
endif
4627

4728
IDALIB32=-lida
4829
IDALIB64=-lida64
4930

5031
else ifeq "$(PLATFORM)" "Darwin"
51-
IDAHOME=/Applications/IDA Pro $(SDKVER)
32+
33+
IDAHOME=/Applications/IDA Pro $(IDAVER)
34+
35+
ifeq "$(IDAVER_MAJOR)" "6"
5236
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+
5345
HAVE_IDA64=$(shell find "$(IDA)" -name libida64.dylib -exec echo -n yes \;)
5446
PLATFORM_CFLAGS=-D__MAC__
5547
PLATFORM_LDFLAGS=-dynamiclib
5648
IDADIR=-L"$(IDA)"
57-
PLUGIN_EXT32=.pmc
58-
PLUGIN_EXT64=.pmc64
49+
5950
IDALIB32=-lida
6051
IDALIB64=-lida64
6152
endif
6253

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
6756
LDFLAGS=$(PLATFORM_LDFLAGS) -m32
57+
else
58+
CFLAGS=-Wextra -Os $(PLATFORM_CFLAGS) -D__X64__ -m64 -fPIC
59+
LDFLAGS=$(PLATFORM_LDFLAGS) -m64
60+
endif
6861

6962
#specify any additional libraries that you may need
7063
EXTRALIBS=-lunicorn
@@ -81,18 +74,31 @@ OUTDIR=$(IDA_SDK)bin/plugins/
8174

8275
SRCS=sk3wldbg.cpp sk3wldbg_arm.cpp sk3wldbg_m68k.cpp \
8376
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
8579

8680
BINARY32=$(OUTDIR)$(PROC)$(PLUGIN_EXT32)
8781
BINARY64=$(OUTDIR)$(PROC)$(PLUGIN_EXT64)
8882

83+
ifdef HAVE_IDA64
84+
8985
all: $(OUTDIR) $(BINARY32) $(BINARY64)
9086

9187
clean:
9288
-@rm *.o
9389
-@rm $(BINARY32)
9490
-@rm $(BINARY64)
9591

92+
else
93+
94+
all: $(OUTDIR) $(BINARY32)
95+
96+
clean:
97+
-@rm *.o
98+
-@rm $(BINARY32)
99+
100+
endif
101+
96102
$(OUTDIR):
97103
-@mkdir -p $(OUTDIR)
98104

@@ -107,22 +113,14 @@ INC=-I$(IDA_SDK)include/ -I./include/
107113

108114
LD=g++
109115

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-
120116
%.o: %.cpp
121117
$(CC) -c $(CFLAGS) $(INC) $< -o $@
122118

123119
$(BINARY32): $(SRCS)
124120
$(LD) $(LDFLAGS) -o $@ $(CFLAGS) $(SRCS) $(INC) $(IDADIR) $(IDALIB32) $(EXTRALIBS)
125121

122+
ifdef HAVE_IDA64
123+
126124
$(BINARY64): $(SRCS)
127125
$(LD) $(LDFLAGS) -o $@ -D__EA64__ $(CFLAGS) $(SRCS) $(INC) $(IDADIR) $(IDALIB64) $(EXTRALIBS)
128126

0 commit comments

Comments
 (0)