int main(int argc, char* argv[]) { if (argc!=2) { show_usage(); return 0; } //while(true) { MAPPED_FILE view = {0}; if( 0 != map_file( argv[1], &view ) ) { printf( "open file failed: %s\n", argv[2]); return -1; } int pe = pe_open((const char*)view.data, view.size); if (pe == INVALID_PE) { printf( "file is not pe format"); return -1; } dump_entry(pe); dump_version(pe); dump_section(pe); dump_export(pe); dump_import(pe); dump_overlay(pe); dump_resource(pe); char path[256] = {0}; strcat(getcwd(path, sizeof(path) - 1), "\\sample.ico"); dump_icon(pe, path); pe_close(pe); unmap_file(&view); //} system("pause"); return 0; }
/* ***************************************************************************** * Function : dump_resources * Syntax : void dump_resources(const resource_t *top) * Input : * top - Top of the resource tree * Output : * nop * Description : Dump the parsed resource-tree to stdout * Remarks : ***************************************************************************** */ void dump_resources(const resource_t *top) { printf("Internal resource-tree dump:\n"); while(top) { printf("Resource: %s\nId: %s\n", get_typename(top), get_nameid_str(top->name)); switch(top->type) { case res_acc: dump_accelerator(top->res.acc); break; case res_bmp: dump_bitmap(top->res.bmp); break; case res_cur: dump_cursor(top->res.cur); break; case res_curg: dump_cursor_group(top->res.curg); break; case res_dlg: dump_dialog(top->res.dlg); break; case res_dlgex: dump_dialogex(top->res.dlgex); break; case res_fnt: dump_font(top->res.fnt); break; case res_icog: dump_icon_group(top->res.icog); break; case res_ico: dump_icon(top->res.ico); break; case res_men: dump_menu(top->res.men); break; case res_menex: dump_menuex(top->res.menex); break; case res_rdt: dump_rcdata(top->res.rdt); break; case res_stt: dump_stringtable(top->res.stt); break; case res_usr: dump_user(top->res.usr); break; case res_msg: dump_messagetable(top->res.msg); break; case res_ver: dump_versioninfo(top->res.ver); break; case res_dlginit: dump_dlginit(top->res.dlgi); break; case res_toolbar: dump_toolbar(top->res.tbt); break; case res_anicur: case res_aniico: dump_ani_curico(top->res.ani); break; default: printf("Report this: Unknown resource type parsed %08x\n", top->type); } printf("\n"); top = top->next; } }