IDA Pro > IDA Pro教程 > 技术问题 > 添加自定义注释

添加自定义注释

发布时间:2022-10-12 20: 00: 06

 

This program creates a segment at paragraph 0x40 and comments the BIOS data area. You should load and execute this file to see the names of BIOS data area variables.

 

//-------------------------------------------------------------------------
static CW(off,name,cmt) {
 auto x;
 x = [ 0x40, off ];
 MakeWord(x);
 MakeName(x,name);
 MakeRptCmt(x,cmt);
}

//-------------------------------------------------------------------------
static CD(off,name,cmt) {
 auto x;
 x = [ 0x40, off ];
 MakeDword(x);
 MakeName(x,name);
 MakeRptCmt(x,cmt);
}

//-------------------------------------------------------------------------
static CB(off,name,cmt) {
 auto x;
 x = [ 0x40, off ];
 MakeByte(x);
 MakeName(x,name);
 MakeRptCmt(x,cmt);
}

//-------------------------------------------------------------------------
static CmtBdata() {
CW(0x000,"com_port_1","Base I/O address of 1st serial I/O port");
CW(0x002,"com_port_2","Base I/O address of 2nd serial I/O port");
CW(0x004,"com_port_3","Base I/O address of 3rd serial I/O port");
CW(0x006,"com_port_4","Base I/O address of 4th serial I/O port");

 

CW(0x008,"prn_port_1","Base I/O address of 1st parallel I/O port");
CW(0x00A,"prn_port_2","Base I/O address of 2nd parallel I/O port");
CW(0x00C,"prn_port_3","Base I/O address of 3rd parallel I/O port");
CW(0x00E,"prn_port_4","Base I/O address of 4th parallel I/O port");

 

 

CW(0x010,"equip_bits",                       "Equipment installed info bits\n"
                                                             "15  14  13   12   11  10   9   8\n"
                                                             "\\    /      game  \\       /\n"
                                                             "# of print  port  # of RS-232\n"
                                                             "ports 0-3   used   ports 0-4\n"
                                                             "\n"
                                                             "7   6    5    4    3   2   1   0\n"
                                                             "\\   /    \\    /    \\   / Math  |\n"
                                                             "# of   video mode  RAM    uP  no\n"
                                                             "disk-  at boot up  00=16K    dsk\n"
                                                             "ettes  00=EGA/VGA  01=32K   driv\n"
                                                             " 1-4   01=CGA-40   10=48K   if 0\n"
                                                             "if bit 10=CGA-80   11=64K\n"
                                                             "0 = 1  11=MDA-80   (old PCs)\n"
                                                             "\n"
                                                             "Note: bit 13=modem on PC lap-tops\n"
                                                             "      bit 2=mouse on MCA & others");

 

 CB(0x012,"manufactr_test",                "Manufacturing Test Byte\n"
                                                             "bit 0 = 1 while in test mode\n"
                                                             "MCA systems use other bits\n"
                                                             "  during POST operations");

 

CW(0x013,"base_ram_size",               "Base memory size in KBytes (0-640)");

 

CB(0x015,"mtest_scratchpad",           "[AT] {Manufacturing test scratch pad}\n"
                                                            "[Compaq Deskpro 386] previous scan code");

 

 CB(0x016,"error_codes",                   "[AT] {Manufacturing test scratch pad}\n"
                                                            "[PS/2 Mod 30] {BIOS control flags}\n"
                                                            "[Compaq Deskpro 386] keyclick loudness (00h-7Fh)");

 

CB(0x017,"keybd_flags_1",                "Keyboard flag bits\n"
                                                            "  7   6   5   4    3   2   1   0\n"
                                                            "ins- cap num scrl alt ctl lef rig\n"
                                                            "sert --toggles--- --shifts down--");

 

CB(0x018,"keybd_flags_2",                "Keyboard flag bits\n"
                                                            "   7     6     5     4   \n"
                                                            "insert  caps  num  scroll\n"
                                                            "------now depressed------\n"
                                                            "\n"
                                                            "   3     2     1     0\n"
                                                            " pause  sys   left right\n"
                                                            " lock request -alt-down-");

 

CB(0x019,"keybd_alt_num",               "Alt-nnn keypad workspace");
CW(0x01A,"keybd_q_head",              "pointer to next character in keyboard buffer");
CW(0x01C,"keybd_q_tail",                 "pointer to first free slot in keyboard buffer");
CW(0x01E,"keybd_queue",                "Keyboard circular buffer");
MakeArray([0x40,0x01E ], 16 );

 CB(0x03E,"dsk_recal_stat",              "Recalibrate floppy drive bits\n"
                                                            "   3       2       1       0\n"
                                                            "drive-3 drive-2 drive-1 drive-0\n"
                                                            "\n"
                                                            "bit 7 = interrupt flag");

 

CB(0x03F,"dsk_motor_stat",               "Motor running status & disk write\n"
                                                            " bit 7=1 disk write in progress\n"
                                                            " bits 6&5 = drive selected 0 to 3\n"
                                                            "    3       2       1       0\n"
                                                            " drive-3 drive-2 drive-1 drive-0\n"
                                                            " --------- 1=motor on-----------");

 

 CB(0x040,"dsk_motor_timer",           "Motor timer, at 0, turn off motor");
CB(0x041,"dsk_ret_code",                 "Controller return code\n"
                                                            " 00h = ok\n"
                                                            " 01h = bad command or parameter\n"
                                                            " 02h = can't find address mark\n"
                                                            " 03h = can't write, protected dsk\n"
                                                            " 04h = sector not found\n"
                                                            " 08h = DMA overrun\n"
                                                            " 09h = DMA attempt over 64K bound\n"
                                                            " 10h = bad CRC on disk read\n"
                                                            " 20h = controller failure\n"
                                                            " 40h = seek failure\n"
                                                            " 80h = timeout, no response");

 

CB(0x042,"dsk_status_1",                  "Status bytes-disk controller chip\n"
                                                            " Note: 7 info bytes returned from\n"
                                                            " controller are saved here. Refer\n"
                                                            " to the NEC uPD 765 chip manual\n"
                                                            " for the specific info, depending\n"
                                                            " on the previous command issued.");

CB(0x043,"dsk_status_2",       "");
CB(0x044,"dsk_status_3",       "");
CB(0x045,"dsk_status_4",       "");
CB(0x046,"dsk_status_5",       "");
CB(0x047,"dsk_status_6",       "");
CB(0x048,"dsk_status_7",       "");

 

 CB(0x049,"video_mode",                   "Present display mode");
CW(0x04A,"video_columns",              "Number of columns");
CW(0x04C,"video_buf_size",              "Video buffer size in bytes\n"
                                                            "  Note: size may be rounded up to\n"
                                                            "  the nearest 2K boundary.  For\n"
                                                            "  example, 80x25 mode=4000 bytes,\n"
                                                            "  but value may be 4096.");

 

CW(0x04E,"video_pageoff",               "Video page offset of the active\n"
                                                            "  page, from start of current \n"
                                                            "  video segment.");

 

CW(0x050,"vid_curs_pos0",               "Cursor position page 0\n"
                                                            "  bits 15-8=row, bits 7-0=column");
CW(0x052,"vid_curs_pos1",               "Cursor position page 1\n"
                                                            "  bits 15-8=row, bits 7-0=column");
CW(0x054,"vid_curs_pos2",               "Cursor position page 2\n"
                                                            "  bits 15-8=row, bits 7-0=column");
CW(0x056,"vid_curs_pos3",               "Cursor position page 3\n"
                                                            "  bits 15-8=row, bits 7-0=column");
CW(0x058,"vid_curs_pos4",               "Cursor position page 4\n"
                                                            "  bits 15-8=row, bits 7-0=column");
CW(0x05A,"vid_curs_pos5",               "Cursor position page 5\n"
                                                            "  bits 15-8=row, bits 7-0=column");
CW(0x05C,"vid_curs_pos6",               "Cursor position page 6\n"
                                                            "  bits 15-8=row, bits 7-0=column");
CW(0x05E,"vid_curs_pos7",               "Cursor position page 7\n"
                                                            "  bits 15-8=row, bits 7-0=column");
CW(0x060,"vid_curs_mode",              "Active cursor, start & end lines \n"
                                                            "  bits 12 to 8 for starting line\n"
                                                            "  bits 4  to 0 for ending line");

 CB(0x062,"video_page",                    "Present page");
CW(0x063,"video_port",                      "Video controller base I/O address");
CB(0x065,"video_mode_reg",             "Hardware mode register bits");
CB(0x066,"video_color",                     "Color set in CGA modes");
CW(0x067,"gen_use_ptr",                  "General use offset pointer");
CW(0x069,"gen_use_seg",                 "General use segment pointer");
CB(0x06B,"gen_int_occurd",              "Unused interrupt occurred\n"
                                                            "  value holds the IRQ bit 7-0 of\n"
                                                            "  the interrupt that occurred");

CW(0x06C,"timer_low",                      "Timer, low word, cnts every 55 ms");
CW(0x06E,"timer_high",                     "Timer, high word");
CB(0x070,"timer_rolled",                    "Timer overflowed, set to 1 when\n"
                                                            " more than 24 hours have elapsed");
CB(0x071,"keybd_break",                   "Bit 7 set if break key depressed");
CW(0x072,"warm_boot_flag",             "Boot (reset) type\n"
                                                            "  1234h=warm boot, no memory test       \n"
                                                            "  4321h=boot & save memory");

 CB(0x074,"hdsk_status_1",               "Hard disk status\n"
                                                            " 00h = ok\n"
                                                            " 01h = bad command or parameter\n"
                                                            " 02h = can't find address mark\n"
                                                            " 03h = can't write, protected dsk\n"
                                                            " 04h = sector not found\n"
                                                            " 05h = reset failure\n"
                                                            " 07h = activity failure\n"
                                                            " 08h = DMA overrun\n"
                                                            " 09h = DMA attempt over 64K bound\n"
                                                            " 0Ah = bad sector flag\n"
                                                            " 0Bh = removed bad track\n"
                                                            " 0Dh = wrong # of sectors, format\n"
                                                            " 0Eh = removed control data addr\n"
                                                            "        mark\n"
                                                            " 0Fh = out of limit DMA\n"
                                                            "        arbitration level\n"
                                                            " 10h = bad CRC or ECC, disk read\n"
                                                            " 11h = bad ECC corrected data\n"
                                                            " 20h = controller failure\n"
                                                            " 40h = seek failure\n"


                                                            " 80h = timeout, no response\n"
                                                            " AAh = not ready\n"
                                                            " BBh = error occurred, undefined\n"
                                                            " CCh = write error, selected dsk\n"
                                                            " E0h = error register = 0\n"
                                                            " FFh = disk sense failure");

CB(0x075,"hdsk_count",                     "Number of hard disk drives");
CB(0x076,"hdsk_head_ctrl",               "Head control (XT only)");
CB(0x077,"hdsk_ctrl_port",                 "Hard disk control port (XT only)");
CB(0x078,"prn_timeout_1",                "Countdown timer waits for printer\n"
                                                            "  to respond (printer 1)");
CB(0x079,"prn_timeout_2",                 "Countdown timer waits for printer\n"
                                                            "  to respond (printer 2)");
CB(0x07A,"prn_timeout_3",                "Countdown timer waits for printer\n"
                                                            "  to respond (printer 3)");
CB(0x07B,"prn_timeout_4",                "Countdown timer waits for printer\n"
                                                            "  to respond (printer 4)");
CB(0x07C,"rs232_timeout_1",            "Countdown timer waits for RS-232 (1)");
CB(0x07D,"rs232_timeout_2",            "Countdown timer waits for RS-232 (2)");
CB(0x07E,"rs232_timeout_3",    "Countdown timer waits for RS-232 (3)");
CB(0x07F,"rs232_timeout_4",    "Countdown timer waits for RS-232 (4)");
CW(0x080,"keybd_begin",        "Ptr to beginning of keybd queue");
CW(0x082,"keybd_end",          "Ptr to end of keyboard queue");
CB(0x084,"video_rows",         "Rows of characters on display - 1");
CW(0x085,"video_pixels",       "Number of pixels per charactr * 8");

CB(0x087,"video_options",      "Display adapter options\n"
   "  bit 7 = clear RAM\n"
   "  bits 6,5 = memory on adapter\n"
   "              00 - 64K\n"
   "              01 - 128K\n"
   "              10 - 192K\n"
   "              11 - 256K\n"
   "  bit 4 = unused\n"
   "  bit 3 = 0 if EGA/VGA active\n"
   "  bit 2 = wait for display enable\n"
   "  bit 1 = 1 - mono monitor\n"
   "        = 0 - color monitor\n"
   "  bit 0 = 0 - handle cursor, CGA");
CB(0x088,"video_switches",     "Switch setting bits from adapter\n"
   "  bits 7-4 = feature connector\n"
   "  bits 3-0 = option switches");
CB(0x089,"video_1_save",       "Video save area 1-EGA/VGA control\n"
   "  bit 7 = 200 line mode\n"
   "  bits 6,5 = unused\n"
   "  bit 4 = 400 line mode\n"
   "  bit 3 = no palette load\n"
   "  bit 2 = mono monitor\n"
   "  bit 1 = gray scale\n"
   "  bit 0 = unused");
CB(0x08A,"video_2_save",       "Video save area 2");

CB(0x08B,"dsk_data_rate",      "Last data rate for diskette\n"
   " bits 7 & 6 = 00 for 500K bit/sec\n"
   "            = 01 for 300K bit/sec\n"
   "            = 10 for 250K bit/sec\n"
   "            = 11 for 1M bit/sec\n"
   " bits 5 & 4 = step rate"
   "Rate at start of operation\n"
   " bits 3 & 2 = 00 for 500K bit/sec\n"
   "            = 01 for 300K bit/sec\n"
   "            = 10 for 250K bit/sec\n"
   "            = 11 for 1M bit/sec");
CB(0x08C,"hdsk_status_2",      "Hard disk status");
CB(0x08D,"hdsk_error",         "Hard disk error");
CB(0x08E,"hdsk_complete",      "When the hard disk controller's\n"
   " task is complete, this byte is\n"
   " set to FFh (from interrupt 76h)");
CB(0x08F,"dsk_options",        "Diskette controller information\n"
   " bit 6 = 1 Drv 1 type determined\n"
   "     5 = 1 Drv 1 is multi-rate\n"
   "     4 = 1 Drv 1 change detect\n"
   "     2 = 1 Drv 0 type determined\n"
   "     1 = 1 Drv 0 is multi-rate\n"
   "     0 = 1 Drv 0 change detect");
CB(0x090,"dsk0_media_st",      "Media state for diskette drive 0\n"
   "    7      6      5      4\n"
   " data xfer rate  two   media\n"
   "  00=500K bit/s  step  known\n"
   "  01=300K bit/s\n"
   "  10=250K bit/s\n"
   "  11=1M bit/sec\n"
   "    3      2      1      0\n"
   " unused  -----state of drive-----\n"
   "         bits floppy  drive state\n"
   "         000=  360K in 360K, ?\n"
   "         001=  360K in 1.2M, ?\n"
   "         010=  1.2M in 1.2M, ?\n"
   "         011=  360K in 360K, ok\n"
   "         100=  360K in 1.2M, ok\n"
   "         101=  1.2M in 1.2M, ok\n"
   "         111=  720K in 720K, ok\n"
   "           or 1.44M in 1.44M\n"
   "        (state not used for 2.88)");
CB(0x091,"dsk1_media_st",      "Media state for diskette drive 1\n"
   " (see dsk0_media_st)");
CB(0x092,"dsk0_start_st",      "Starting state for drive 0");
CB(0x093,"dsk1_start_st",      "Starting state for drive 1");
CB(0x094,"dsk0_cylinder",      "Current track number for drive 0");
CB(0x095,"dsk1_cylinder",      "Current track number for drive 1");
CB(0x096,"keybd_flags_3",      "Special keyboard type and mode\n"
   " bit 7 Reading ID of keyboard\n"
   "     6 last char is 1st ID char\n"
   "     5 force num lock\n"
   "     4 101/102 key keyboard\n"
   "     3 right alt key down\n"
   "     2 right ctrl key down\n"
   "     1 E0h hidden code last\n"
   "     0 E1h hidden code last");
CB(0x097,"keybd_flags_4",      "Keyboard Flags (advanced keybd)\n"
   "  7      6       5     4  3 2 1 0\n"
   "xmit   char   Resend  Ack   \   /\n"
   "error was ID  Rec'd  Rec'd   LEDs");

CW(0x098,"timer_waitoff",      "Ptr offset to wait done flag");
CW(0x09A,"timer_waitseg",      "Ptr segment to wait done flag");
CW(0x09C,"timer_clk_low",      "Timer low word, 1 microsecond clk");
CW(0x09E,"timer_clk_high",     "Timer high word");
CB(0x0A0,"timer_clk_flag",     "Timer flag 00h = post acknowledgd\n"
   "           01h = busy\n"
   "           80h = posted");
CB(0x0A1,"lan_bytes",          "Local area network bytes (7)");
MakeArray([0x40,0xA1],7);

CD(0x0A8,"video_sav_tbl",      "Pointer to a save table of more\n"
   "pointers for the video system \n"
   "           SAVE TABLE\n"
   " offset type    pointer to\n"
   " ÄÄÄÄÄÄ ÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\n"
   "   0     dd  Video parameters\n"
   "   4     dd  Parms save area\n"
   "   8     dd  Alpha char set\n"
   "  0Ch    dd  Graphics char set\n"
   "  10h    dd  2nd save ptr table\n"
   "  14h    dd  reserved (0:0)\n"
   "  18h    dd  reserved (0:0)\n"
   " \n"
   " 2ND SAVE TABLE (from ptr above)\n"
   " offset type functions & pointers\n"
   " ÄÄÄÄÄÄ ÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ\n"
   "   0     dw  Bytes in this table\n"
   "   2     dd  Combination code tbl\n"
   "   6     dd  2nd alpha char set\n"
   "  0Ah    dd  user palette tbl\n"
   "  0Eh    dd  reserved (0:0)\n"
   "  12h    dd  reserved (0:0)\n"
   "  16h    dd  reserved (0:0)");
CW(0x0CE,"days_since1_80",     "Days since 1-Jan-1980 counter");
MakeArray(0x4AC,0xCE-0xAC);
}

//-------------------------------------------------------------------------
static main() {
 if ( !SegCreate(0x400,0x4D0,0x40,0,0,2) ) {
   Warning("Can't create BIOS data segment.");
   return;
 }
 SegRename(0x400,"bdata");
 SegClass(0x400,"BIOSDATA");
 CmtBdata();
}

展开阅读全文

标签:

读者也访问过这里:
邀请您进入交流群 点击扫码
400-8765-888 kefu@makeding.com

专业销售为您服务

欢迎添加好友,了解更多IDA优惠信息,领逆向工程学习资料礼包1份!
热门文章
exe反编译工具哪个好?反编译能力强的工具盘点
随着软件技术的发展,exe(可执行文件)已经成为了电脑、手机等多个平台上的主要软件运行格式,而对于exe文件的反编译也成为了逆向工程中不可缺少的一个步骤。本文将介绍一些常用的exe反编译工具,并评价其优缺点,帮助读者选择合适的工具。
2023-04-12
idapro怎么改为中文
IDA Pro是一款功能强大的反汇编和反编译工具,广泛应用于逆向工程和软件开发领域。在使用IDA Pro时,如果我们不习惯英文界面,可以将其改为中文界面。本文将介绍IDA Pro怎么改为中文界面。IDA Pro界面改成中文主要有两种方法,下面是详细介绍。
2023-04-19
c++反编译工具有哪些
反编译C++代码的工具一般是针对可执行文件和库文件的反汇编和逆向分析工具。本文将给大家介绍c++反编译工具有哪些的内容。市面说的c++反编译工具有很多,下面介绍几款使用认识较多的软件。
2023-04-23
ida怎么查找字符串 ida字符串窗口快捷键
在数字化时代,逆向工程作为解密软件和分析程序的关键技术,正日益受到广泛关注。在逆向分析的过程中,IDA(Interactive DisAssembler)是一款备受推崇的工具,它为逆向工程师们提供了强大的功能和灵活的操作。本文将带您深入探讨如何在IDA中查找字符串,优化字符串窗口的使用,并探讨IDA如何将变量转换成字符串,帮助您更加熟练地驾驭这一工具,为逆向分析的世界增添一抹精彩。
2023-09-27
ida如何转伪代码 ida伪代码怎么看
IDA Pro是一款常用的反汇编和反编译工具,可以帮助我们分析二进制文件的实现细节和执行过程,以便更好地理解程序的执行过程和逻辑。在进行逆向工程的过程中,我们经常需要将反汇编结果转换为伪代码,以便更好地进行分析和修改。本文将介绍如何使用IDA Pro转换为伪代码,并简单讲解ida伪代码怎么看。
2023-04-14
最新文章
IDA Pro动态调试教程需要配哪些环境 IDA Pro动态调试教程里断点通常下在哪里
光靠盯着反汇编和那些近似C语言的伪代码来看,很多分叉的执行路径其实还是很难吃准;所以大家就会关心IDA Pro的动态调试流程到底需要提前配好哪些环境,在实际操作里头断点一般又该下在什么地方比较管用,从自己拥有授权的测试小软件开始练手是一条比较稳当的路。在铺排环境的时候,不妨先把操作系统、处理器架构、程序要用的依赖库和输入文件都一一备齐,然后再顺着软件大致的执行路径,循序渐进地把中断位置加上去;这么做既能比较清楚地观察到程序是怎么跑起来的,也不容易被环境方面的小毛小病把思路搅乱。
2026-06-03
IDA Pro逆向教程练什么样本更合适 IDA Pro逆向教程里先练静态还是动态
刚开始学习IDA Pro的时候,如果一上来就选了过于复杂的样本,很容易就会陷进数量庞大的函数、库代码和异常分支里面,半天都理不出一个清晰的头绪。所以,先得弄明白两个很实际的问题:在IDA Pro的逆向学习过程中,到底该选什么样的样本来练手,以及在整个学习次序上,是应该先练静态分析,还是先练动态调试。一个比较稳妥的起步办法,是从自己动手编译的小型程序开始,先把程序的整体结构看明白,之后再打开调试器去验证自己之前的那些想法。练手用的文件范围,最好就严格限定在自编译程序、公开发布的教学样本,还有已经拿到明确授权的文件上面,不要直接去分析那些没有经过授权的商业软件,也尽量不要随便运行那些来源不明的程序。
2026-06-03
IDA Pro使用教程适合零基础吗 IDA Pro使用教程里哪些窗口最常用
很多人刚接触二进制分析的时候,很容易被IDA Pro的界面弄得不知所措,它的窗口多、地址多,汇编语句也排得密密麻麻。IDA Pro的使用教程到底适不适合零基础呢,答案是可以用来入门,只是不要刚上来就指望能看明白太复杂的样本。官方的入门资料里,也把IDA View、Pseudocode、Hex Dump View、Local Types和Functions View这几个窗口列为了初学者平时用得比较多的。所以零基础阶段最好先学会怎样加载文件、定位函数、查看字符串和跟踪调用关系,然后再逐步去补汇编与数据结构的知识,这样进入状态会更顺畅一些。
2026-06-03
IDA Pro下载教程该看哪个版本 IDA Pro下载教程安装后先检查哪些环境
刚开始使用IDA Pro的时候,要是教程的版本选得不对,后面很容易碰到各种别扭的情况。不同版本的软件,界面菜单的布局、许可证管理的方式、插件该放在哪个目录,还有一些功能入口的位置,都会跟着变化。按照Hex-Rays官方最新的发布记录,IDA 9.3sp1已经当成9.3系列的一个维护版本放出来了,它主要是改进了一下V850反编译器,顺带修了一些别的问题。如果是头一回装IDA,那优先去看9.3系列的教程会更合适;要是手上还在维护一些比较老的工程,那就应该根据机器上实际装的版本来找对应的资料,这样才不容易对不上号。
2026-06-03
IDA中文乱码通常和什么设置有关 IDA中文乱码出现后编码方式该怎么调整
在分析那些带有中文资源、日志文本或者配置内容的程序时,字符串窗口里时不时就会跳出问号、方框,或者干脆是一些没法阅读的字符。要弄清楚IDA里头的中文乱码通常跟哪些设置有关,还有乱码出现后编码方式该怎么去调整,先得分辨清楚这些乱码到底是出现在反汇编里的字符串、是Hex View右侧显示的那部分文本,还是旧数据库里留下来的注释。从7.0版本开始,IDA内部已经统一换成了UTF-8,但被分析的那个程序本身的原始字节,它照样可能用的是GBK、UTF-8、UTF-16LE这些不一样的编码,一旦判断错了,显示出来的东西就会不正常。
2026-06-03
IDA配置文件放在哪个目录 IDA配置文件改错以后怎么回退
很多人改IDA配置时,前面只是想调一个分析选项、界面行为或插件相关参数,结果一改完发现启动表现不对,甚至连原来的习惯都乱了。这个问题往往不是配置项本身有多复杂,而是没先分清IDA的配置文件到底放在安装目录还是用户目录,也没先想好改错以后该从哪一层回退。Hex-Rays官方文档已经把这条线说明白了,配置文件会按固定目录顺序查找,常见文件名也比较明确,所以只要先把目录和优先级理顺,后面的回退动作就会清楚很多。
2026-06-01

通过微信咨询我们

欢迎添加好友,了解更多IDA优惠信息,领取逆向工程学习资料礼包1份!

读者也喜欢这些内容: