00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "analy_register.h"
00022 #include "common.h"
00023 #include "global.h"
00024
00025 #include "analy_alpha.h"
00026 #include "analy_java.h"
00027 #include "analy_ia64.h"
00028 #include "analy_il.h"
00029 #include "analy_ppc.h"
00030 #include "analy_x86.h"
00031 #include "class_analy.h"
00032 #include "code_analy.h"
00033 #include "coff_analy.h"
00034 #include "data_analy.h"
00035 #include "elf_analy.h"
00036 #include "flt_analy.h"
00037 #include "ne_analy.h"
00038 #include "pe_analy.h"
00039 #include "le_analy.h"
00040 #include "macho_analy.h"
00041 #include "xbe_analy.h"
00042 #include "pef_analy.h"
00043
00044 #include "htatom.h"
00045
00046 BUILDER(ATOM_ANALY_ALPHA, AnalyAlphaDisassembler)
00047 BUILDER(ATOM_ANALY_X86, AnalyX86Disassembler)
00048 BUILDER(ATOM_ANALY_IA64, AnalyIA64Disassembler)
00049 BUILDER(ATOM_ANALY_IL, AnalyILDisassembler)
00050 BUILDER(ATOM_ANALY_JAVA, AnalyJavaDisassembler)
00051 BUILDER(ATOM_ANALY_PPC, AnalyPPCDisassembler)
00052
00053 BUILDER(ATOM_CODE_ANALYSER, CodeAnalyser)
00054 BUILDER(ATOM_DATA_ANALYSER, DataAnalyser)
00055 BUILDER(ATOM_ADDR_QUEUE_ITEM, AddressQueueItem)
00056 BUILDER(ATOM_ADDR_XREF, AddrXRef)
00057
00058 BUILDER(ATOM_PE_ANALYSER, PEAnalyser)
00059 BUILDER(ATOM_ELF_ANALYSER, ElfAnalyser)
00060 BUILDER(ATOM_COFF_ANALYSER, CoffAnalyser)
00061 BUILDER(ATOM_NE_ANALYSER, NEAnalyser)
00062 BUILDER(ATOM_CLASS_ANALYSER, ClassAnalyser)
00063 BUILDER(ATOM_LE_ANALYSER, LEAnalyser)
00064 BUILDER(ATOM_MACHO_ANALYSER, MachoAnalyser)
00065 BUILDER(ATOM_FLT_ANALYSER, FLTAnalyser)
00066 BUILDER(ATOM_XBE_ANALYSER, XBEAnalyser)
00067 BUILDER(ATOM_PEF_ANALYSER, PEFAnalyser)
00068
00069 BUILDER(ATOM_ADDRESS_INVALID, InvalidAddress)
00070 BUILDER(ATOM_ADDRESS_FLAT_32, AddressFlat32)
00071 BUILDER(ATOM_ADDRESS_FLAT_64, AddressFlat64)
00072 BUILDER(ATOM_ADDRESS_X86_FLAT_32, AddressX86Flat32)
00073 BUILDER(ATOM_ADDRESS_X86_1616, AddressX86_1616)
00074 BUILDER(ATOM_ADDRESS_X86_1632, AddressX86_1632)
00075
00076 bool init_analyser()
00077 {
00078 REGISTER(ATOM_ANALY_ALPHA, AnalyAlphaDisassembler)
00079 REGISTER(ATOM_ANALY_X86, AnalyX86Disassembler)
00080 REGISTER(ATOM_ANALY_IA64, AnalyIA64Disassembler)
00081 REGISTER(ATOM_ANALY_IL, AnalyILDisassembler)
00082 REGISTER(ATOM_ANALY_JAVA, AnalyJavaDisassembler)
00083 REGISTER(ATOM_ANALY_PPC, AnalyPPCDisassembler)
00084
00085 REGISTER(ATOM_CODE_ANALYSER, CodeAnalyser)
00086 REGISTER(ATOM_DATA_ANALYSER, DataAnalyser)
00087 REGISTER(ATOM_ADDR_QUEUE_ITEM, AddressQueueItem)
00088 REGISTER(ATOM_ADDR_XREF, AddrXRef)
00089
00090 REGISTER(ATOM_PE_ANALYSER, PEAnalyser)
00091 REGISTER(ATOM_ELF_ANALYSER, ElfAnalyser)
00092 REGISTER(ATOM_COFF_ANALYSER, CoffAnalyser)
00093 REGISTER(ATOM_NE_ANALYSER, NEAnalyser)
00094 REGISTER(ATOM_CLASS_ANALYSER, ClassAnalyser)
00095 REGISTER(ATOM_LE_ANALYSER, LEAnalyser)
00096 REGISTER(ATOM_MACHO_ANALYSER, MachoAnalyser)
00097 REGISTER(ATOM_FLT_ANALYSER, FLTAnalyser)
00098 REGISTER(ATOM_XBE_ANALYSER, XBEAnalyser)
00099 REGISTER(ATOM_PEF_ANALYSER, PEFAnalyser)
00100
00101 REGISTER(ATOM_ADDRESS_INVALID, InvalidAddress)
00102 REGISTER(ATOM_ADDRESS_FLAT_32, AddressFlat32)
00103 REGISTER(ATOM_ADDRESS_FLAT_64, AddressFlat64)
00104 REGISTER(ATOM_ADDRESS_X86_FLAT_32, AddressX86Flat32)
00105 REGISTER(ATOM_ADDRESS_X86_1616, AddressX86_1616)
00106 REGISTER(ATOM_ADDRESS_X86_1632, AddressX86_1632)
00107 return true;
00108 }
00109
00110 void done_analyser()
00111 {
00112 UNREGISTER(ATOM_ANALY_ALPHA, AnalyAlphaDisassembler)
00113 UNREGISTER(ATOM_ANALY_X86, AnalyX86Disassembler)
00114 UNREGISTER(ATOM_ANALY_IA64, AnalyIA64Disassembler)
00115 UNREGISTER(ATOM_ANALY_IL, AnalyILDisassembler)
00116 UNREGISTER(ATOM_ANALY_JAVA, AnalyJavaDisassembler)
00117 UNREGISTER(ATOM_ANALY_PPC, AnalyPPCDisassembler)
00118
00119 UNREGISTER(ATOM_CODE_ANALYSER, CodeAnalyser)
00120 UNREGISTER(ATOM_DATA_ANALYSER, DataAnalyser)
00121 UNREGISTER(ATOM_ADDR_QUEUE_ITEM, AddressQueueItem)
00122 UNREGISTER(ATOM_ADDR_XREF, AddrXRef)
00123
00124 UNREGISTER(ATOM_PE_ANALYSER, PEAnalyser)
00125 UNREGISTER(ATOM_ELF_ANALYSER, ElfAnalyser)
00126 UNREGISTER(ATOM_COFF_ANALYSER, CoffAnalyser)
00127 UNREGISTER(ATOM_NE_ANALYSER, NEAnalyser)
00128 UNREGISTER(ATOM_CLASS_ANALYSER, ClassAnalyser)
00129 UNREGISTER(ATOM_LE_ANALYSER, LEAnalyser)
00130 UNREGISTER(ATOM_MACHO_ANALYSER, MachoAnalyser)
00131 UNREGISTER(ATOM_FLT_ANALYSER, FLTAnalyser)
00132 UNREGISTER(ATOM_XBE_ANALYSER, XBEAnalyser)
00133 UNREGISTER(ATOM_PEF_ANALYSER, PEFAnalyser)
00134
00135 UNREGISTER(ATOM_ADDRESS_INVALID, InvalidAddress)
00136 UNREGISTER(ATOM_ADDRESS_FLAT_32, AddressFlat32)
00137 UNREGISTER(ATOM_ADDRESS_FLAT_64, AddressFlat64)
00138 UNREGISTER(ATOM_ADDRESS_X86_FLAT_32, AddressX86Flat32)
00139 UNREGISTER(ATOM_ADDRESS_X86_1616, AddressX86_1616)
00140 UNREGISTER(ATOM_ADDRESS_X86_1632, AddressX86_1632)
00141 }