ida

结合工程实践选题调研分析同类软件产品

余生长醉 提交于 2019-12-01 05:35:33
我的工程实践选题跟CTF比赛有关,因此,我选取了三种CTF常用工具:Ollydbg(OD),IDA Pro,objdump。 1. 这些软件的开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取⽤户的现⾦么?还是别的? I DA Pro是一个静态反编译软件; OllyDbg是动态反汇编工具,附带了脱壳脚本和各种插件;objdump是在类Unix操作系统上显示关于目标文件的各种信息的命令行程序,可用作反汇编器来以汇编代码形式查看可执行文件。 这三个工具都因为在做题练习的时候要用到,所以开始使用的。其中IDA Pro是商业软件,但是可以下载免费版本或演示/评估版本,但是免费版本有一些限制。objdump和OD则是免费使用。 2. 这些软件是如何到你手里的(邮购,下载,互相拷贝、在线使用……) IDA pro和OD是从官网直接下载的,objdump是在Linux终端安装的。 3. 这些软件有Bug 么?又是如何更新新版本的? Bug应该有吧,但我自己的使用过程中还没发现。IDA pro,OD的新版本都可以在官网找到。objdump在Linux终端用update更新就可以。 4. 此类软件是什么时候开始出现的,同⼀类型的软件之间是如何竞争的? 发展趋势如何? IDA pro IDA 由Ilfak Guilfanov创建的共享应用程序

IDA Pro disassembly shows ? instead of hex or plain ascii in .data?

旧时模样 提交于 2019-11-30 23:34:22
I am using IDA Pro to disassemble a Windows DLL file. At one point I have a line of code saying mov esi, dword_xxxxxxxx I need to know what the dword is, but double-clicking it brings me to the .data page and everything is in question marks . How do I get the plain text that is supposed to be there? If you see question marks in IDA, this means that there's no physical data at this location on the file (on your disk drive). Sections in PE files have a physical size (given by the SizeOfRawData field of the section header). This physical size (on disk) might be different from the size of the

记录一次安卓动态调试lib库

馋奶兔 提交于 2019-11-30 22:51:10
这道题是iscc 2017中的安卓第二题,所有的算法都在lib库中,而lib库又是加了壳的,所以就用动态调试解决吧。第一次动态调试安卓,就写的详细一些吧。 文中用到 1.能正常运行这个crackme的手机一部,需要root(本人手上的主力机是安卓7.1的就运行不了) 2.IDA一个 3.IDA神级插件Keypatch 4.安卓调试adb 5.python 6.这个crackme 题目链接 链接: http://pan.baidu.com/s/1kVLYYOJ 密码:e2tj 解析 准备 首先在手机上安装这个crackme,这个不需要多说。 通过jeb的逆向,发现所有与题目解题相关的代码都在libtutu.so中。ida直接载入会发现这个so是被加密的。 那就开始动态调试。 在ida的目录下有一个叫dbgsrv的文件夹 此次我们动态调试所需要的是android_server。 通过各种方法,把它放到 /system/bin/ 目录下,并给予执行权限 然后在电脑上执行 adb shell ,输入 su 拿到root权限后再输入 andoird_server 。 看到 Listening on port #23946... 再开一个命令行窗口,输入 adb forward tcp:23946 tcp:23946 进行端口转发。 至此,准备工作就完成了。 IDA连接调试

记录一次安卓动态调试lib库

柔情痞子 提交于 2019-11-30 22:38:38
这道题是iscc 2017中的安卓第二题,所有的算法都在lib库中,而lib库又是加了壳的,所以就用动态调试解决吧。第一次动态调试安卓,就写的详细一些吧。 文中用到 1.能正常运行这个crackme的手机一部,需要root(本人手上的主力机是安卓7.1的就运行不了) 2.IDA一个 3.IDA神级插件Keypatch 4.安卓调试adb 5.python 6.这个crackme 题目链接 链接: http://pan.baidu.com/s/1kVLYYOJ 密码:e2tj 解析 准备 首先在手机上安装这个crackme,这个不需要多说。 通过jeb的逆向,发现所有与题目解题相关的代码都在libtutu.so中。ida直接载入会发现这个so是被加密的。 那就开始动态调试。 在ida的目录下有一个叫dbgsrv的文件夹 此次我们动态调试所需要的是android_server。 通过各种方法,把它放到 /system/bin/ 目录下,并给予执行权限 然后在电脑上执行 adb shell ,输入 su 拿到root权限后再输入 andoird_server 。 看到 Listening on port #23946... 再开一个命令行窗口,输入 adb forward tcp:23946 tcp:23946 进行端口转发。 至此,准备工作就完成了。 IDA连接调试

IDA Pro disassembly shows ? instead of hex or plain ascii in .data?

我与影子孤独终老i 提交于 2019-11-30 17:44:04
问题 I am using IDA Pro to disassemble a Windows DLL file. At one point I have a line of code saying mov esi, dword_xxxxxxxx I need to know what the dword is, but double-clicking it brings me to the .data page and everything is in question marks . How do I get the plain text that is supposed to be there? 回答1: If you see question marks in IDA, this means that there's no physical data at this location on the file (on your disk drive). Sections in PE files have a physical size (given by the

逆向工厂(一):从hello world开始

江枫思渺然 提交于 2019-11-30 17:24:53
前言 从本篇起,逆向工厂带大家从程序起源讲起,领略计算机程序逆向技术,了解程序的运行机制,逆向通用技术手段和软件保护技术,更加深入地去探索逆向的魅力。 一、程序如何诞生? 1951年4月开始在英国牛津郡哈维尔原子能研究基地正式投入使用的英国数字计算机“哈维尔·德卡特伦”,是当时世界上仅有的十几台电脑之一。图中两人手持的“纸带”即是早期的程序,纸带通过是否穿孔记录1或0,而这些正好对应电子器件的开关状态,这便是机器码,是一种早期计算机程序的存储形式。 计算机程序是用来实现某特定目标功能,所以需要将人类思维转换为计算机可识别的语言,从人类语言到电子器件开关的闭合,这中间的媒介便是“编程语言”。 “编程语言”大致分为三类: 1、机器语言,又称机器码、原生码,电脑CPU可直接解读,因该语言与运行平台密切相关,故通用性很差,上面提到的利用卡带记录的便属于该类语言; 2、汇编语言,是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在不同的设备中,汇编语言对应着不同的机器语言指令集, 运行时按照设备对应的机器码指令进行转换,所以汇编语言可移植性也较差; 3、高级语言,与前两种语言相比,该类语言高度抽象封装,语法结构更接近人类语言,逻辑也与人类思维逻辑相似,因此具有较高的可读性和编程效率。但是高级语言与汇编语言相比,因编译生成的辅助代码较多,使运行速度相对“较慢”

C++ name mangling by hand

 ̄綄美尐妖づ 提交于 2019-11-30 14:56:52
问题 I am writing a script for the IDA Pro disassembler in Python using the idapython plugin. Using this, I am able to fill in the gaps where IDA's auto-analysis falls short. One area that has me stumped is naming locations/functions with (for want of a better term) "pretty names". An example of what I mean is illustrated below: idapython and IDA Pro itself only allow me to enter basic C-ish function names. If I enter disallowed symbols (e.g. the scope resolution operator), they're replaced with

What does an equals sign = on the right side of a LDR instruction in ARM mean?

只愿长相守 提交于 2019-11-30 12:36:17
Been googling this for a while but i can't find any documentation relating to this. I've been trying to learn ARM and have been looking at the compiled ARM assembly code for a simple calculator.c program i wrote in order to see if I could understand what was going on. The thing I keep seeing is instructions like these: LDR R3, =__stack_chk_guard__GLIBC_2.4 or LDR R0, =aEnterOperator ; "Enter operator: " or LDR R0, =aSIsNotAValidOp ; "%s is not a valid operator. Enter +, -" Note: the stuff after the semicolons is just the auto-comments added by IDA. My question is, what does the '=' on the

Ida pro gragh output batch mode

点点圈 提交于 2019-11-29 16:27:59
Can anyone let me know how we are going to output all the subroutine's graphs in batch mode suing IDC . i.e. I have 447 subroutine's and wanna be output them all and I would like to make sure I first retrieve all the routines address automatically, cuz by knowing the address I can simply use GenFuncCall . P.S: Is this the only cfg that I can get from Ida Pro given a binary dis-assembled file? If you just want the address of all known functions in the IDB, you could use something like this using IDAPython (just an example): def main(): for count, func_ea in enumerate(Functions()): if func_ea ==