反汇编

kali官方各工具简介(转)

匿名 (未验证) 提交于 2019-12-03 00:38:01
各工具kali官方简介(竖排): https://tools.kali.org/tools-listing 名称 类型 使用模式 功能 功能评价 dmitry 信息收集 whois查询/子域名收集/端口扫描 whois并不简单明了;子域名和邮箱依赖google;端口扫描速度一般 dnmap 信息收集 用于组建分布式nmap,dnmap_server为服务端;dnmap_client为客户端 用起来并不是那么方便,不是实在不行不是很必要 ike-scan 信息收集 收集ipsec vpn server指纹信息 好像用于攻击vpn,不太懂 maltegoce 信息收集 域名/账号等关联性收集展示 关联性展示功能确实很好,但效果可能没有那么理想,特别是对国内而言 netdiscover 信息收集 主动发出arp包和截获arp包 就arp探测功能就此功能本身而言做得算很好了 nmap 信息收集 端口服务探测和端口漏洞扫描 端口扫描集大成者 p0f 信息收集 监听网卡收发的数据包,从数据包中读取远端机器操作系统服务版本等信息 毕竟只是截取数据 包中的版本信息,效果期望不要很大 regon-ng 信息收集 模仿msf的信息侦查框架 类似将站长工具等东西命令行化,想法挺好但是用起来感觉不是那么直观 sparta 暴力破解 图形版的hydra,加了端口服务扫描功能 还行图形界面聊胜于无

ollydbg使用――反汇编入门

匿名 (未验证) 提交于 2019-12-03 00:34:01
反汇编需要汇编语言的基础,感觉可以同时学, ollydbg快捷键: F2――下断点,也就是指定断点的地址; F3――加载一个可执行程序,进行调试分析; F4――程序执行到光标处; F5――缩小还原当前窗口; F7――单步步入; F8――单步步过;(Ctrl+F8可以自动步过并设置断点) F9――直接运行程序,遇到断点处,程序暂停; Ctrl+F2――重新运行程序到起始处,一般用于重新调试程序; Ctrl+F9――执行到函数返回处,用于跳出函数实现; Alt+F9――执行到用户代码处,用于快速跳出系统函数; Ctrl+G――输入十六进制地址,快速定位到该地址处; 下面将要通过反汇编,改变程序的输出,举个例子: 先贴这次用的exe程序的C语言源码(非常简单的初学代码): #include <stdio.h> #include <stdlib.h> int main() { } 很显然,当我们输入a不为0时,就会输出YES,输入a=0时,就会输出NO,如下图: 用ollydbg打开这个exe程序, Ctrl+F8走到我们要调试的地方,并设置断点,手动设置的话,需要一步步按F8,走到需要调试的地方按F2设置断点: 红色说明已经设置了断点,然后我们再按Ctrl+F2重新载入一下,F9走到刚才设置的断点处: 按F7单步步入,进入 这里我们已经看到了程序输出的YES和NO,就不再试了

delphi反编译ded加密解密之反汇编工具

匿名 (未验证) 提交于 2019-12-02 23:52:01
原文链接: http://www.cnblogs.com/renyinyi/archive/2012/04/14/2446694.html   反汇编工具:我们借助反汇编工具可以将大部分的Win程序反汇编出他的汇编代码.对与高手来说,借助这些工具反汇编出的汇编语句可以将程序的源码还原出来,我们使用反汇编工具主要的目的就是来静态分析这款软件。找到关键处以方便我们下delphi反编译ded加密解密之反汇编工具一步的动态调试。   反汇编工具:我们借助反汇编工具可以将大部分的Win程序反汇编出他的汇编代码.对与高手来说,借助这些工具反汇编出的汇编语句可以将程序的源码还原出来,我们使用反汇编工具主要的目的就是来静态分析这款软件。找到关键处以方便我们下一步的动态调试。   目前在反汇编工具中,最强大的无疑是IDAPro,但是该工具对新手来说,快速掌握操不是一件易事,当你对破解有一定认识后推荐选用。W32Dasm以前是大家一直在用的一款工具,由于该软件作者停止更新 Dashboard 2012年4月 (1) ,加上搜索ASCII的功能我们使用OD的插件即可完成,所以一般很少再使用;在反汇编工具上还是要介绍一款国内密界高手CCGPII621的C32ASM,功能相当强大,国人写的软件对中文的支持当然更完美些,当我们使用OD的插件找不到关键字符时,不妨用这款工具试下,可能就会有意外的惊喜

X86 逆向反汇编: 指针

匿名 (未验证) 提交于 2019-12-02 23:32:01
注意点: 1、带*类型的变量宽 度永远是4字节 、无论类型是什么,无论有几个*. 2、带*类型的变量,++ 或者 -- 新增(减少)的数量是 去掉一个*后变量的宽度 3、带*类型的变量可以加、减一个整数,但 不能乘或者除 . 4、带*类型变量与其他整数相加或者相减时: char* a; short* b; int* c; a = (char*)100; b = (short*)100; c = (int*)100; a = a + 5; b = b + 5; c = c + 5; printf("%d %d %d", a, b, c); //105 110 120 char** a; short** b; int** c; a = (char**)100; b = (short**)100; c = (int**)100; a = a + 5; b = b + 5; c = c + 5; printf("%d %d %d", a, b, c); //120 120 120 5、两个类型相同的带*类型的变量可以进行减法操作, 想减的结果要除以去掉一个*的数据的宽度 . char* a; char* b; a = (char*)200; b = (char*)100; int x = a - b; printf("%d\n", x); //100 short* a; short* b;

反汇编及linux下edb的下载

◇◆丶佛笑我妖孽 提交于 2019-12-02 18:48:48
gcc --help gcc -E filename.c -o filename.i //-E对文件进行预处理 gcc -S filename.i //-S对文件进行编译 gcc -c filename.s //-c对文件进行汇编 gcc filename.c -o filename //-o指定输出文件名称 //反汇编命令 objdump -d filename > filename.txt -d:disassemble :输出重定向 安装edb //安装动态反编译器edb(源中有edb) sudo apt-get update sudo apt-get install edb // 安装qt ~sudo apt-get install qt-sdk // 安装boost ~sudo apt-get install libboost-all-dev // 安装capstone ~sudo apt-get install libcapstone-dev // 安装qt5 ~sudo apt-get install qt5-default // 安装Qt5XmlPatterns ~sudo apt-get install libqt5xmlpatterns5-dev // 安装qt5svg5 ~sudo apt install libqt5svg5-dev // 把目录切到下载的包

003_arm-linux-gcc使用

戏子无情 提交于 2019-12-02 06:44:05
1、概述 arm-linux-gcc 是交叉编译器,基本用法与 gcc 相同,目的是将编译的程序放在目标机(ARM)上运行。 2、用法举例 (1)预处理:C/C++源文件中,以“#”开头的命令被称为预处理命令,如包含命令“#include”、宏定 义命令“#define”、条件编译命令“#if”、“#ifdef”等。预处理就是将要包含(include)的 文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些东西 输出到一个“.i”文件中等待进一步处理。 预处理将用到 arm-linux-cpp 工具 。 (2) 编译:编译就是把 C/C++代码(比如上述的“.i”文件)“翻译”成汇编代码,所用到的 工具为 cc1 (它的名字就是 cc1,不是 arm-linux-cc1)。 (3)汇编:汇编就是将第二步输出的汇编代码翻译成符合一定格式的机器代码,在 Linux 系统上一般表现为 ELF 目标文件(OBJ 文件),用到的 工具为 arm-linux-as 。“反汇编”是指将机器代码转换为汇编代码,这在调试程序时常常用到。 (4)链接: 连接就是将上一步生成的 OBJ 文件和系统库的 OBJ 文件、库文件连接起来,最终生成了可 以在特定平台运行的可执行文件,用到的 工具为 arm-linux-ld 。 /* File: hello.c */ #include

多级指针和数组指针

╄→гoц情女王★ 提交于 2019-12-01 08:30:31
1.*()和[] 定义几个不同级别的指针类型的数据 char* p1; char** p2; char*** p3; char**** p4; char***** p5; char****** p6; char******* p7; 1)*运算 代码: printf("%d",*p1); 反汇编: 结论: *运算的本质是取指针变量的值,利用这个值作为地址来寻址获取结果; 代码: printf("%d",*(p1+0)); 分析: 根据指针类型的特性,p1+0所得的类型还是char*类型, 并且所得的值要加上为去掉一个*后的类型的宽度乘以所加的数,而char的宽度是1,结果还是和原来一样; 反汇编和*P1没有区别: 结论:*(p1) ==*(p1+0) 2)[]运算 *(p1+0)可以用另一种写法:p1[0] printf("%d",p1[0]); 反汇编: 分析: *(p1+0)和p1[0]生成的反汇编代码完全一样; 结论: *(p1+0) == p1[0] 代码: printf("%d",*(p1+2)); printf("%d",p1[2]); 反汇编: 分析: *(p1+2)是用p1+2所得的值来寻址:p1+(char*去掉一个*后的类型的宽度也就是char=1)x2; *(p1+2)的反汇编和p1[2]完全一样; 结论: *(p1+2) == p1[2] 3)多级指针

深入了解GOT,PLT和动态链接

隐身守侯 提交于 2019-12-01 07:28:19
教材学习内容总结 实验楼部分 X86 寻址方式经历三代: 1 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全 2 8086的分段模式 3 IA32的带保护模式的平坦模式 二进制文件可以用od 命令查看,也可以用gdb的x命令查看。有些输出内容过多,我们可以使用 more或less命令结合管道查看,也可以使用输出重定向来查看 od code.o | more od code.o > code.txt gcc -S xxx.c -o xxx.s 获得汇编代码,也可以用 objdump -d xxx 反汇编; 函数前两条和后两条汇编代码,所有函数都有,建立函数调用栈帧 64位机器上想要得到32代码:gcc -m32 -S xxx.c MAC OS中没有objdump, 有个基本等价的命令otool Ubuntu中 gcc -S code.c (不带-O1) 产生的代码更接近教材中代码(删除"."开头的语句) PPT部分 x86-64的CPU包含一组16个存储64位的通用目的寄存器,如图: MOV中的一些常见的数据传送指令 函数调用时栈帧相对应的变化 操作部分 ① 对教材P114的C语言文件 mstore.c 使用命令 gcc -Og -S mstore.c 可产生其对应的汇编文件 mstore.s 但是不做进一步操作;使用命令 gcc -Og -c mstore.c

C++反汇编: 基础知识(7)

岁酱吖の 提交于 2019-11-29 19:16:17
title: 'C++反汇编: 基础知识(7)' date: 2019-09-07 12:18:41 tags: 汇编与反汇编 categories: 汇编与反汇编 copyright: true --- 反汇编(Disassembly),即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解、外挂技术、病毒分析、逆向工程、软件汉化等领域,学习和理解反汇编语言对软件调试、漏洞分析、内核原理及理解高级语言代码都有相当大的帮助,软件一切神秘的运行机制全在反汇编代码里面,该笔记整理了C++反汇编的一些常识. 变量与常量 数值类型变量: 整数,浮点数,等类型其反汇编结果基本相同. int main(int argc, char* argv[]) { int x = 10; int y = 20; int z = 0; z = x + y; return 0; } 反汇编结果如下,首先lea取地址,然后ECX=13,这里的13是因为我们有3个整数型变量,每个变量占用4个字节,所以4x3=12次,将EAX设置为CCCCCCC,并通过rep指令填充内存地址从[edi]指向的位置开始填充,填充14次,同样的也初始化了堆栈,接着通过mov赋值语句将内存地址分别初始化为指定的数值. 0040D709 |. 8D7D B4 lea edi, dword ptr [ebp-4C] 0040D70C

系统内存和进程内存

走远了吗. 提交于 2019-11-29 00:41:01
===系统内存=== 系统内存的使用情况可以用以下公式表示: MemTotal = MemFree +【Slab+ VmallocUsed + PageTables + KernelStack + HardwareCorrupted + Bounce + X】+【Active + Inactive + Unevictable + (HugePages_Total * Hugepagesize)】 MemTotal = MemFree +【Slab+ VmallocUsed + PageTables + KernelStack + HardwareCorrupted + Bounce + X】+【Cached + AnonPages + Buffers + (HugePages_Total * Hugepagesize)】 MemTotal = MemFree +【Slab+ VmallocUsed + PageTables + KernelStack + HardwareCorrupted + Bounce + X】+【ΣPss + (Cached – mapped) + Buffers + (HugePages_Total * Hugepagesize)】 File-backed内存,anon匿名内存,Shmem是tmpfs所使用的内存