define dd rva on IDAPro
发布日期:2021-06-30 22:10:33
浏览次数:2
分类:技术文章
本文共 3506 字,大约阅读时间需要 11 分钟。
前言
IDAPro载入PE分析后,会标出 dd rva GetOpenFileNameA 这样的助记符地址.
在这样的助记符地址上,按h键(一不小心就按一下), 助记符号地址变成了dd 1234h这样的rva地址. 如果再想变成好记的助记符地址,就麻烦了,IDAPro好像没有提供像k那样的快捷键. 现在正在分析一个加壳的程序,如果不改回来,就轮到我难受了. e.g. 加壳程序将引入表的IAT抹掉了,是动态恢复的, 在分析时,__IMPORT_DESCRIPTOR_KERNEL32中的DLL名称和NAME的RVA如果改不成dd rva GetOpenFileNameA这样一目了然的助记符, 静态分析时,会麻烦很多. 毕竟人不是机器. 要不然,要助记符干嘛. 经过试验,圈住rva地址, 用ALT+F1(自定义标注)可以改回rva地址的助记符地址的型式.记录
先看原来的样子(IDA自动分析的结果)
.text:004066D6 ; ---------------------------------------------------------------------------.text:004066D9 db 0.text:004066DA db 0.text:004066DB db 0.text:004066DC __IMPORT_DESCRIPTOR_USER32_DLL dd rva INT_USER32_DLL.text:004066E0 dd 0 ; Time stamp.text:004066E4 dd 0 ; Forwarder Chain.text:004066E8 dd rva szUser32_dll ; DLL Name.text:004066EC dd rva GetWindowLongW ; Import Address Table.text:004066F0 __IMPORT_DESCRIPTOR_KERNEL32 dd rva INT_KERNEL32_dll ; Import Name Table.text:004066F4 dd 0 ; Time stamp.text:004066F8 dd 0 ; Forwarder Chain.text:004066FC dd rva aKernel32_dll ; DLL Name.text:00406700 dd rva HeapAlloc ; Import Address Table.text:00406704 .text:004201E8 off_4201E8 dd rva word_40127E.text:00406704 __IMPORT_DESCRIPTOR_RPCRT4 dd rva INT_RPCRT4_dll ; Import Name Table.text:00406708 dd 0 ; Time stamp.text:0040670C dd 0 ; Forwarder Chain.text:00406710 dd rva aRpcrt4_dll ; DLL Name.text:00406714 dd rva IUnknown_Release_Proxy ; Import Address Table.text:00406718 __IMPORT_DESCRIPTOR_COMDLG32 dd rva off_42022C ; Import Name Table.text:0040671C dd 0 ; Time stamp.text:00406720 dd 0 ; Forwarder Chain.text:00406724 dd rva aComdlg32_dll ; DLL Name.text:00406728 .idata:00401580 ; BOOL __stdcall GetOpenFileNameA(LPOPENFILENAMEA).text:00406728 dd rva GetOpenFileNameA ; Import Address Table
这里用到的助记符都是rva地址.
假设手欠, 在dd rva GetOpenFileNameA的GetOpenFileNameA上按了一下h, 将rva地址变成了rva地址的16进制值..text:00406718 __IMPORT_DESCRIPTOR_COMDLG32 dd rva off_42022C ; Import Name Table.text:0040671C dd 0 ; Time stamp.text:00406720 dd 0 ; Forwarder Chain.text:00406724 dd rva aComdlg32_dll ; DLL Name.text:00406728 .idata:00401580 ; BOOL __stdcall GetOpenFileNameA(LPOPENFILENAMEA).text:00406728 dd 1580h ; Import Address Table
现在看起来就很难受了, 现在改回来.
1580h的VA地址00401580h, 去00401580h看看.idata:00401580 ; Imports from COMDLG32.dll.idata:00401580 ;.idata:00401580 ; BOOL __stdcall GetOpenFileNameA(LPOPENFILENAMEA).idata:00401580 extrn GetOpenFileNameA:dword.idata:00401584 ; DWORD __stdcall CommDlgExtendedError().idata:00401584 extrn CommDlgExtendedError:dword
在.text:00406728圈住1580h, 右击,选择菜单 Menual…
填入 rva GetOpenFileNameA, 不要选check operand, 点击确定 助记符回来了..text:00406728 .idata:00401580 ; BOOL __stdcall GetOpenFileNameA(LPOPENFILENAMEA).text:00406728 80 15 00 00 dd rva GetOpenFileNameA ; Import Address Table
在手工添加rva 标号时,如果标号不存在(按h键时,IDA可能直接将符号删了(加入一个dowrd_xx标号,只有一处在引用)),可以去对应的目标VA处,添加一个标号,再ALT+F1, 恢复dd rva 助记符.
转载地址:https://lostspeed.blog.csdn.net/article/details/52718599 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月07日 04时49分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SQL经典题目总结
2019-05-01
剑指offer编程题,一周刷完
2019-05-01
推荐系统初学
2019-05-01
Map的遍历和排序
2019-05-01
约瑟夫环问题
2019-05-01
springboot+log4j2体验
2019-05-01
redis集群启动方式
2019-05-01
ubuntu系统开机自启动方式
2019-05-01
ES查询效率之快的三个重要技术
2019-05-01
JDBC概念,JDBC连接到Oracle 11g(内附驱动jar包),
2019-05-01
彻底卸载MySQL
2019-05-01
Oracle创建表,修改表(添加列、修改列、删除列、修改表的名称以及修改列名)
2019-05-01
SQL命令分类(DDL、DML、DCL、TCL以及事务)
2019-05-01
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate 报错
2019-05-01
kafka集群搭建
2019-05-01
Python正则表达式,从入门到实战,精华都在这里!
2019-05-01
喜欢玩王者荣耀的有福了,用 Python 获取英雄皮肤壁纸
2019-05-01
一名数据分析师的SQL学习历程
2019-05-01
图解《金字塔原理》,7步掌握其精华!
2019-05-01
数据分析入门选择Python还是SQL?七个常用操作对比!
2019-05-01