手把手教你解密MacOS平台下的Chrome密码

手把手教你解密MacOS平台下的Chrome密码

7个月前 (10-25) 浏览: 74 评论: 0

虽然现在网上有很多开源的软件可以帮助你解密那些存储在GoogleChrome浏览器中的密码,但是这些软件几乎只支持在Windows操作系统下使用。那么对于我们这些Mac用户来说,当我们需要快速导出Chrome中存储的全部密码时,我们该怎么做呢? 直接进入正题 其中最常见的一种做法就是打开Chrome浏览器,选择“浏览器设置”,点击“管理密码”,然后你将会看到如下图所示的界面。接下来,你就可以在这里

OS X平台的Dylib劫持技术(下)

OS X平台的Dylib劫持技术(下)

7个月前 (10-20) 浏览: 62 评论: 0

0x01 攻击 跟着我们对OS X平台下的dylib劫持知识有了基础的理解以后,现在是时候来看看现实世界中的攻击场景,并且提供一些实际的防御方法。 高级的黑客知道,尽可能多的攻击组建自动化对攻击的重要性。这样的自动化能提升攻击的规模和效率。解放攻击者,让攻击者将精力集中到更高的要求或者攻击中更复杂的方面。 劫持攻击的第一个自动化组件就是程序漏洞的挖掘。我们用一个Python脚本,dylibHija

OS X平台的Dylib劫持技术(上)

OS X平台的Dylib劫持技术(上)

7个月前 (10-20) 浏览: 48 评论: 0

DLL劫持是一项广为人知的攻击技术,一直以来被认为只会影响到Windows系统。然而本文将会介绍OS X系统同样存在着动态链接库劫持。通过利用OS X动态库loader的未文档化的技术和几种特性,攻击者将精心制作的包含恶意代码的动态链接库加载进存在漏洞的程序中。通过这种方法,攻击者可以实现多种恶意行为,包括:隐秘驻留,进程加载时注入,绕过安全防护软件,当然还包括Gatekeeper的绕过(提供远程

逆向工厂(二):静态分析技术

逆向工厂(二):静态分析技术

8个月前 (09-28) 浏览: 36 评论: 0

前言 [逆向工厂]第一章节中介绍了逆向技术的相关基础知识,其中提到逆向的两种形式:静态分析、动态分析。本章将对静态分析技术进行讲解,重点阐述静态分析的原理方法,程序的静态结构,常见流程控制语句的静态反编译形态,并且通过实例来掌握利用IDA逆向工具的静态逆向分析技术。 一、静态分析原理与方法 上一篇章介绍到,程序运行前需要将硬盘内编译好的程序文件装载进内存,然后将指令送入CPU执行,此时程序就像“复

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

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

8个月前 (09-27) 浏览: 47 评论: 0

前言 从本篇起,逆向工厂带大家从程序起源讲起,领略计算机程序逆向技术,了解程序的运行机制,逆向通用技术手段和软件保护技术,更加深入地去探索逆向的魅力。 一、程序如何诞生? 1951年4月开始在英国牛津郡哈维尔原子能研究基地正式投入使用的英国数字计算机“哈维尔·德卡特伦”,是当时世界上仅有的十几台电脑之一。图中两人手持的“纸带”即是早期的程序,纸带通过是否穿孔记录1或0,而这些正好对应电子器件的开关

Skype逆向之旅

Skype逆向之旅

8个月前 (09-23) 浏览: 22 评论: 0

from: Skype逆向之旅: 创世纪 http://www.oklabs.net/skype-reverse-engineering-genesis/ Skype逆向之旅:分析篇 http://www.oklabs.net/skype-reverse-engineering-the-long-journey/ 0x00 背景 我想...在显示分析之前先交代一下背景信息。 But,我得先为我糟糕

逆向基础 OS-specific (四)

逆向基础 OS-specific (四)

8个月前 (09-23) 浏览: 51 评论: 0

68.1 CRT(win32) 程序一开始就从main()函数执行的?事实并非如此。如果我们用IDA或者HIEW打开一个可执行文件,我们可以看到OEP(Original Entry Point)指向了其它代码块。这些代码做了一些维护和准备工作之后再把控制流交给我们的代码。这就是所谓的startup-code或叫CRT code(C RunTime)。 main()函数通过一个数组接收命令行传递过来

逆向基础 OS-specific (三)

逆向基础 OS-specific (三)

8个月前 (09-23) 浏览: 37 评论: 0

66章 系统调用(syscall-s) 众所周知,所有运行的进程在操作系统里面分为两类:一类拥有访问全部硬件设备的权限(内核空间)而另一类无法直接访问硬件设备(用户空间)。 操作系统内核和驱动程序通常是属于第一类的。 而应用程序通常是属于第二类的。 举个例子,Linux kernel运行于内核空间,而Glibc运行于用户空间。 这种分离对与操作系统的安全性是至关重要的:它最重要的一点是,不给任何进

逆向基础 OS-specific (二)

逆向基础 OS-specific (二)

8个月前 (09-23) 浏览: 38 评论: 0

65.1 线程局部存储 TLS是每个线程特有的数据区域,每个线程可以把自己需要的数据存储在这里。一个著名的例子是C标准的全局变量errno。多个线程可以同时使用errno获取返回的错误码,如果是全局变量它是无法在多线程环境下正常工作的。因此errno必须保存在TLS。 C++11标准里面新添加了一个thread_local修饰符,标明每个线程都属于自己版本的变量。它可以被初始化并位于TLS中。 L

逆向基础 OS-specific  (一)

逆向基础 OS-specific (一)

8个月前 (09-23) 浏览: 41 评论: 0

64.1 cdcel 这种传递参数的方法在C/C++语言里面比较流行。 如下的代码片段所示,调用者反序地把参数压到栈中:最后一个参数,倒数第二个参数,第一个参数。调用者还必须在函数返回之后把栈指针(ESP)还原为初始状态。 Listing 64.1: cdecl push arg3 push arg2 push arg1 call function add esp, 12 ; returns ES

逆向基础(十) JAVA (四)

逆向基础(十) JAVA (四)

8个月前 (09-22) 浏览: 38 评论: 0

54.15 异常 让我们稍微修改一下,月处理的那个例子(在932页的54.13.4) 清单 54.10: IncorrectMonthException.java #!java public class IncorrectMonthException extends Exception { private int index; public IncorrectMonthException(int

逆向基础(九) JAVA (三)

逆向基础(九) JAVA (三)

8个月前 (09-22) 浏览: 31 评论: 0

54.13数组 54.13.1简单的例子 我们首先创建一个长度是10的整型的数组,对其初始化。 #!java public static void main(String[] args) { int a[]=new int[10]; for (int i=0; i<10; i++) a[i]=i; dump (a); } public static void main(java.la

逆向基础(八) JAVA (二)

逆向基础(八) JAVA (二)

8个月前 (09-22) 浏览: 37 评论: 0

54.7 线性同余伪随机数生成器 这次来看一个简单的伪随机函数生成器,之前我在书中提到过一次。 #!java public class LCG { public static int rand_state; public void my_srand (int init) { rand_state=init; } public static int RNG_a=1664525; public sta

逆向基础(六)

逆向基础(六)

8个月前 (09-22) 浏览: 26 评论: 0

Chapter 16 数组 数组是在内存中连续排列的一组变量,这些变量具有相同类型1。 16.1 小例子 #!cpp #include <stdio.h> int main() { int a[20]; int i; for (i=0; i<20; i++) a[i]=i*2; for (i=0; i<20; i++) printf (&qu

逆向基础(五)

逆向基础(五)

8个月前 (09-22) 浏览: 43 评论: 0

Chapter 14 Division by 9 下面是一个非常简单的函数 #!bash int f(int a) { return a/9; }; 14.1 x86 以一种十分容易预测的方式编译的 #!bash _a$ = 8 ; size = 4 _f PROC push ebp mov ebp, esp mov eax, DWORD PTR _a$[ebp] cdq ; sign exten

逆向基础(四)

逆向基础(四)

8个月前 (09-22) 浏览: 30 评论: 0

第11章 选择结构switch()/case/default 11.1 一些例子 #!bash void f (int a) { switch (a) { case 0: printf ("zero "); break; case 1: printf ("one "); break; case 2: printf ("two "); br

逆向基础(三)

逆向基础(三)

8个月前 (09-22) 浏览: 39 评论: 0

CHAPER7 访问传递参数 现在我们来看函数调用者通过栈把参数传递到被调用函数。被调用函数是如何访问这些参数呢? #!cpp #include <stdio.h> int f (int a, int b, int c) { return a*b+c; }; int main() { printf ("%d ", f(1, 2, 3)); retur

逆向基础(二)

逆向基础(二)

8个月前 (09-21) 浏览: 59 评论: 0

Chapter 5 printf() 与参数处理 现在让我们扩展"hello, world"(2)中的示例,将其中main()函数中printf的部分替换成这样 #!cpp #include <stdio.h> int main() { printf("a=%d; b=%d; c=%d", 1, 2, 3); return 0; }; 5.1 x86

逆向基础(一)

逆向基础(一)

8个月前 (09-21) 浏览: 56 评论: 0

第一章 CPU简介 CPU就是执行所有程序的工作单元。 词汇表: Instruction:CPU的原指令,例如:将数据在数据区与寄存器之间进行转移操作,对数据进行操作,算术操作。原则上每种CPU会有自己独特的一套指令构架(Instruction Set Architecture(ISA))。 Machine code: CPU的指令码(机器码),每条指令都会被译成指令码。 Assembly Lan

切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册

扫一扫二维码分享