问题标签 [ida]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reverse-engineering - IDA Pro 中的调试部分是什么?
我尝试用我糟糕的汇编技能分析一个 dll 文件,如果我无法实现非常琐碎的事情,请原谅我。我的问题是,在调试应用程序时,我只在调试会话中找到我正在寻找的代码,在我停止调试器后,地址就消失了。dll 看起来没有被混淆,因为许多代码都是可读的。看看截图。我正在寻找的代码位于 debug376 部分中的地址 07D1EBBF。顺便说一句,我从哪里得到这个 debug376 部分?
所以我的问题是,如何在不调试的情况下找到此功能?谢谢
更新
好的,正如我所说,一旦我停止调试器,代码就会消失。我什至无法通过字节序列找到它(但我可以在调试模式下)。当我启动调试器时,代码并没有立即反汇编,我应该在那个地方添加一个硬件断点,只有当断点被命中时,IDA才会显示反汇编代码。看看这个屏幕截图 你会看到我感兴趣的代码行,如果程序没有在调试模式下运行,它是不可见的。我不确定,但我认为这类似于在运行时解包代码,这在设计时是不可见的。
无论如何,任何帮助将不胜感激。我想知道为什么隐藏该代码,直到断点命中(它显示为“db 8Bh”等)以及如果可能的话如何在不调试的情况下找到该地址。顺便说一句,这可能是来自不同模块(dll)的代码吗?
谢谢
更新 2
我发现 debug376 是在运行时创建的段。这么简单的问题:我怎样才能找出这个片段来自哪里:)
debugging - 首先调用DLL
所以,我有一个可能很简单的问题。首先我要注意我是 IDA 调试过程的初学者,请不要笑我...
我想调试windows服务,就是svchost.exe。我将 IDA 与 Windbg 一起使用。所以,我附上了适当的过程。我在右侧窗口的特殊列表中看到 - 我的进程使用了哪些 dll 文件。我的问题是:我怎样才能知道 - 首先将使用什么 dll?我想添加一个断点,但我不知道 - 我需要在什么函数中添加它...这个过程在 Windows 7 中使用 5355 远程端口,我向这个端口发送了一些数据,我希望看到我的数据......也许有可能找出第一个使用的dll。
我会感谢任何人的帮助或解释。
winapi - 查找短暂的 HANDLE 关联的文件
我正在玩 IDA 的演示,我正在尝试对程序进行一些逆向工程,以找出它使用的其中一个文件的结构。我的最终目标是能够直接从我自己的程序中读取该文件。
使用Process Monitor我能够找到调用kernel32_ReadFile
. 我想知道的是如何在变量调用之前找出hFile
变量指向的内容ReadFile
在调试模式下,我一直在探索菜单,但在 IDA 中找不到任何可以查找与文件句柄关联的文件的信息的地方。
如何将句柄映射到真实文件?
c - 需要IDA Pro中的C代码解释
我正在使用 IDA Pro 反汇编以下 C 代码: 但是,在我看来,下面的反汇编似乎是不完整的。数据从未被初始化(根据 C 代码),即使它似乎已加载到堆栈中,但是位于 00401040 的过程(nullsub_1)没有使用数据?我是在做出正确的评估还是我错过了什么???我使用 Visual C++ 6/2005 来编译 C 代码。
reverse-engineering - 如何在 IDA Pro 中设置数组元素的大小?
如何在 IDA Pro 中设置数组元素的大小?我正在创建一个我想要拥有 DWORD 数组的结构。但它默认为字节。
我有 IDA Pro 6.1
c# - 无法解密这些字符串
前言
我正在尝试反汇编和反向工程一个作者早已不在的程序。该程序提供了一些我在其他地方还没有找到的独特功能,并且……我对该程序进行逆向工程感到好奇和感兴趣。如果你只是想帮我找到另一个程序……别打扰了。
问题
我正在使用带有 Hex-Rays Decompiler 的 IDA Pro 来获得一些不错的伪代码,以尝试加速逆向工程。我认为有助于加快速度的一件大事是弄清楚字符串的含义。到目前为止,这就是我发现的长度超过 4 个字符的字符串:
通过查看三个字符的字符串的类似伪代码,并使用 Hex-Rays 悬停在类型信息上,我是这样理解的:
- runtimeVersion 是一个常量 wchar
- 这意味着它具有 Unicode 字符 (UTF-16)
- 该字符串嵌入内存中,但在这种情况下,是弱加密的(XOR?)
上面的伪代码对于所有大字符串都是相同的,除了每个字符串的常量“882”不同。我假设这是某种编译时加密或宏,它一个一个地找到字符串并唯一地“加密”它们。但是,问题是,我似乎无法通过复制伪代码来获得正确的字符串。这是我在 C# 中的内容:
'rawCharacters' 是一个超短数组。我将每个 dword 条目分成两半,并将每个条目视为 ushort。我将它们从底部到顶部放在数组中...因此分配给 runtimeVersion[0] 的值首先添加到我的数组中,然后是来自 dword_131893E 的值,然后是 dword_1318942 等。
我不确定我在这里缺少什么。这似乎很简单,以至于反转和恢复字符串应该是小菜一碟,但我对从伪代码到实际代码的转换感到困惑。
想法?
c++ - 在不调试正在运行的程序的情况下弄清楚对象的内存布局?
我正在对程序进行逆向工程。我正在使用 IDA Pro 和 Hex-Rays 反编译器。我遇到了一大堆代码,我知道有一个对象并且对象上有一个方法调用,但它以我无法弄清楚的方式显示。例如:
我在这里知道 interfacePtr 指向一个 ICLRRuntimeHost 对象。(C++,.NET CLR 运行时)但是....我不知道 *(*interfacePtr + 24) 是什么。我可以说这是一种方法,但我如何弄清楚 +24 的位置是什么?
ida - 更改 IDA 5.0 的汇编语言
是否可以将汇编语言设置为 IDA 5.0 的 AT&T 语法?谢谢
assembly - 如何使用十六进制编辑器更改指令?
我在搞一些逆向工程,但我不知道如何使用十六进制编辑器将 jnz 更改为 jz。我知道它会因系统而异,但我不确定在哪里可以找到这些信息。我正在使用 Mac OS X 64 位,并使用 IDA Pro 反汇编代码。
assembly - 了解 x86 MOV 语法
我认为这是一个很容易(也许很容易)回答的问题,但经过近两个小时的谷歌搜索后,我已经三振了。我很确定我的问题是因为我只是不明白语法在做什么。
我正在查看 IDA 中的一些反汇编代码,但我不知道以下内容在做什么:
如果我跳到byte_404580
我发现.data:00404580 byte_404580 db 69h
告诉我该值为0x69
. 但我不明白这是如何使用的。
让我提供此代码出现的上下文:
上面假设EAX
最初是 0x73,我得到DL
=0x76。我尝试改变 的值EAX
以找到一些模式,但我无法弄清楚发生了什么。