问题标签 [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.
c++ - 逆向工程 C++
今天我决定使用 IDA Pro 反编译一个用 Visual C++ 编写的简单“Hello world”程序。
以我以前的知识,我确信我不会在可执行入口点找到对 printf 的立即调用,我是对的。发现很多代码不是我写的,是编译器在编译过程中添加的。
我想更好地了解在编译过程中添加了哪些代码。它有什么作用?有没有什么“技巧”可以快速找到“main”并跳过反汇编生成的所有不必要的代码?
我能找到的最好的是在这篇文章中:http: //www.codeproject.com/Articles/4210/C-Reverse-Disassembly,说使用Visual C++编译的可执行文件的执行顺序如下:
Crtl启动
主要的
CrtlCleanUp
请问我可以得到更详细的答案吗?
ollydbg - 反汇编自修改代码
我一直在想——如何反汇编自修改二进制文件?我猜您不能使用 olly 或 IDA,因为它们是静态反汇编程序,对吗?如果你跳到指令的中间,反汇编程序会发生什么?以及如何分析变质引擎?
patch - IDA Pro 命令行补丁程序
我刚刚开始使用 IDA Pro(试用版)。我正在尝试使用 IDA Pro 反编译二进制 ARM 文件;是否可以向二进制文件添加全新的函数,是否可以更改现有函数的名称?
我正在考虑将新添加的功能作为新的入口点并将旧入口点重命名为别的东西。我也想使用 CLI 而不是 GUI。
谢谢 SrcKode
assembly - 学习大会和 IDA
我正在尝试学习一些组装/拆卸。我创建了一个基本的 Hello World C EXE(带有一个简单的添加功能)并将其放入 IDA 的免费版本中。
我有点明白发生了什么事。只是为了澄清......以下是做什么的?
它显示了三个 DWORD 变量。什么是-0D8H?-14小时?-8?内存地址?我只是让它加 15 + 1。
对不起,我是 IDA 和大会的新手。
谢谢
delphi - IDA 没有识别静态编译的函数
我目前正在对似乎是静态编译的文件进行逆向工程,但是 IDA Pro 没有收到任何签名!我觉得我花了很多时间来逐步了解 IDA 应该识别的功能,但事实并非如此。
无论如何,也许我错了......有人有什么想法吗?有没有人遇到过这个?
patch - IDA 程序集修补失败,“无法从当前位置到达目的地”
我是 IDA(和逆向工程)的新手。
我正在尝试使用编辑->补丁菜单中的“补丁->程序集”选项,但它失败并出现我无法理解的错误。
我当前的行是“jnz short func”(其中 func 是我从 loc_xxxx 重命名的标签),我正在尝试将其更改为“jmp short func”,但是当我单击“确定”时,我收到一个消息框:“无法从当前位置到达目的地”。
谁能解释这是什么意思,为什么它不起作用?我试图到处搜索,但找不到任何答案!
我还必须补充一点,这是我找到的 IDA 教程的一部分(在 tut4you.com 中)。
再次感谢您的帮助,我真的很坚持!
ios - 是否可以编辑和重新编译 iOS 二进制文件?
我有一个应用程序并最近发布到 Cydia。它已被其他人破解并发布在洪流网站上。我内部有一个二进制校验和验证机制,他们能够根据他们对二进制文件所做的更改创建一个新的校验和文件。他们编辑了两个函数并将其反编译并发布到种子。
我看到可以看到函数和类的实际实现。但是为了编辑函数,他们必须找到该函数的地址并通过 HEX EDITOR 进行编辑。我不想让它“无法破解”,但我真的很想知道他们是如何破解的。
如何在 iOS 二进制文件中编辑函数并重新编译?例如,我的一个课程中有以下方法。
我想编辑这个函数的返回值。那可能吗?
rebase - 变基和调试
所以通常当我使用 IDA 进行调试时,我不会遇到任何问题。然而,对于这个特殊的进程(模块之前的大小为 9.9 MB),IDA 坚持每次启动进程时都会重新设置基准,这会冻结 IDA 并迫使我等待 20-30 分钟才能真正开始。
为什么它会这样做,我可以以某种方式禁用它吗?我对诸如此类的高级调试很陌生,因此重新设置基数对我来说只有一点意义。
masm32 - 读取反汇编代码
我用masm32编写了简单的Hello word程序。但是当我尝试用 IDA 反汇编它时,我得到了更大的输出(我不会在那里写它,因为它会占用很多空间)。我不明白为什么它不同。如何运行反汇编的代码?
objective-c - 如何在 ARM 程序集中获得正确的选择器
当我用 IDA 打开 iOS 框架地址簿时,我得到以下代码:
如何在调用 _objc_msgSend() 之前知道 R1 中存储了哪些选择器。
在互联网的帮助下,我做了以下事情:
在 MOVW R1, #0x2B06 和 MOVT.W R1, #0xB 之后,我得到了 R1=0x000B2B06
在 ADD R1, PC 之后,我得到 R1=0x000B2B06+PC(A13A)+4=0x000BCC44,其中 A13A 是 ADD R1, PC 的地址
该地址附近的内容是:
__objc_selrefs:000BCC44 DCD aInitasaddres_0 ; “initAsAddressBook:withAddressBook:withS”... __objc_selrefs:000BCC48 DCD aDefaultstylepr ; "defaultStyleProviderForStyle:" __objc_selrefs:000BCC4C DCD aInitwithnaviga ; "initWithNavigationController:" __objc_selrefs:000BCC50 DCD aSetupinitialst ; “setupInitialStackAndLoadState:”
所以我得到了选择器“initAsAddressBook:withAddressBook:withS ...”,
4.但是当我记录工作流时,我得到了“setupInitialStackAndLoadState:”实际上被调用了。
我获取选择器的方法有什么问题吗?