123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /* ReadDolphinMap.idc
- Loads Dolphin .map files into IDA Pro.
- Carl Kenner, 2014
- */
- #include <idc.idc>
- static main(void)
- {
- auto fh;
- auto fname;
- auto pusha, popa;
- auto start, end;
- auto success;
- auto count;
- auto line;
- auto ea; // column 1
- auto name; // column 30
- auto p;
- auto code;
- fname = AskFile(0,"*.map","Load a .map file from Dolphin emulator...");
- fh = fopen(fname, "r");
- if (fh == 0) {
- Message("Can't open %s\n", fname);
- return;
- }
- Message("Loading %s dolphin map file:\n", fname);
- for (count = 0; 1; count++) {
- line = readstr(fh);
- if (line == -1)
- break;
- if (strlen(line)>30 && line[0]!=" ") {
- ea = xtol(substr(line,0,8));
- name = substr(line,29,strlen(line)-1);
- if (substr(name,0,3)!="zz_") {
- if (!MakeNameEx(ea,name,SN_NOCHECK | SN_PUBLIC | SN_NON_AUTO |SN_NOWARN)) {
- MakeNameEx(ea,name+"_2",SN_NOCHECK | SN_PUBLIC | SN_NON_AUTO );
- }
- Message("ea='%x', name='%s'\n", ea, name);
- } else {
- MakeNameEx(ea,name,SN_NOCHECK | SN_PUBLIC | SN_AUTO | SN_WEAK | SN_NOWARN);
- }
- } else if (strlen(line)>30) {
- ea = xtol(substr(line,18,18+8));
- p = strstr(line, " \t");
- if (p>=30 && ea!=0) {
- name = substr(line,30,p);
- code = substr(line,p+2,strlen(line));
- SetFunctionCmt(ea, code, 0);
- if (!MakeNameEx(ea,name,SN_NOCHECK | SN_PUBLIC | SN_NON_AUTO |SN_NOWARN)) {
- MakeNameEx(ea,name+"_2",SN_NOCHECK | SN_PUBLIC | SN_NON_AUTO );
- }
- }
- }
- }
- Message("Dolphin map file done.\n");
- }
|