自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 8086中断处理过程

当外设向CPU发送可屏蔽中断请求:1)8259中断控制器通过INTR信号线发送高电屏请求信号2)CPU在每执行一条指令的最后一个时钟周期时会采样INTR信号线判断有无新的中断请求,如果INTR标志为1(也就是有中断请求)CPU就会首先判断IF标志位,如果为1,CPU就允许中断响应。IF=0就忽略该中断。3)IF=1,CPU通过INTA(这里表示上划线,因为笔者不知道怎么设置上划线)信号...

2020-04-09 09:25:53 7269

原创 指令执行原理

8086的CPU分为执行部件(EU)和总线接口部件(BIU)。程序指令执行原理:1)当CS:IP设置好后,BIU会从设置好的地址根据对应架构的指令格式不停的按顺序读取指令,并将指令放在指令队列缓冲器里等待执行控制部件控制电路执行2)EU检测到指令队列缓冲器里的指令条数大于1条的时候就开始执行从对应队列中取指令执行,对其进行译码,并根据指令要求向EU内各个部件发送控制命令。3)如果指...

2020-04-07 11:35:20 860

原创 Windows窗口程序

什么是窗口想要深入了解Windows机制就必须从我们随处可见的Window(窗口)说起。窗口就是我们在使用图形程序时,屏幕上显示的矩形区域。不同的窗口可能包含一些相同组成部分,如:窗口外沿,就是我们用于拖拽窗口移动位置的外边框。标题栏,也就是窗口程序最上方显示标题的地方,一般用于显示应用程序名字。一下图片是窗口的组成部分,各个组成部分都有自己的行为特征。大部分窗口都和以下图片类似,但并不是每个...

2020-03-09 17:59:25 1093 1

原创 一个win32程序的编译内容

程序员在编写一个Win32程序与编写一个32位控制台程序有些许不同。Win32程序除了代码逻辑需要程序编写外,还需要编写对应的资源文件。一个windows图形化程序的编写过程如下:编写代码和资源文件->通过编编译器转换成可链接的机器代码文件(.obj文件)、对应的资源文件(.res)->链接器将代码和对应的资源链接成可执行文件(.exe)。资源文件内容包括:对话框、快捷键、...

2020-03-08 19:41:39 529 1

原创 x86汇编语言简介

汇编语言是最古老的编程语言,它是所有语言中最接近原生机器语言的。它拥有直接访问计算机硬件的特权。汇编器和链接器汇编器是一种工具程序,用于将汇编语言符号转换成机器语言的“0101”二进制。链接器同样也是工具程序,通过链接器把汇编器生成的单个文件组成一个可执行程序。汇编语言与高级语言的区别首先我们要知道机器语言是一种数字语言,处理器被设计成可以专门计算这些数字语言的结构。但是要我们人去...

2020-03-07 21:30:44 2616 4

原创 安卓逆向学习——Fiddler的安装和使用

Fiddler和Charles这两款工具都是用于手机的网络抓包,Charles主要用于Mac操作系统使用而且是收费工具,所以一般我们都是用FD进行抓包的。我们知道Http是非安全的超文本传输协议,而Https是在Http协议基础上使用SSL加密构成的协议,这种协议更为安全。Fiddler和大多数抓包工具相同,它通过第三方模拟网卡的接口对网卡的抓取和发送数据包进行监管,从而实现抓包的目的。它的...

2020-02-29 17:44:55 512 1

原创 安卓逆向学习——IDEA动态调试

我们获取包名和程序入口活动名还可以通过一条命令来实现adb shell dumpsys activity top这条命令代表获取当前系统运行的所有进程的包名和入口活动名和PID。安装并打开IDEA,配置JDK和SDK的位置配置好JDK后用同样的方式配置SDK即可,这里不再赘述。想要动态调试还需要安装Smali插件接下来一样使用AK将要动态调试的APK反编译出来,导入项...

2020-02-29 11:40:37 877 1

原创 安卓逆向学习——动态调试

安装好AndroidStudio后设置JDK和SDK路径安装Smali插件选择你的Smalidea插件的位置添加插件接下来把要安装的apk安装到模拟器上运行该进程打开AS,选择打开项目,直接导入AK反编译的apk文件路径即可。复制上面的文件路径打开AS导入对应路径项目导入成功后选择Project...

2020-02-29 10:26:58 933 2

原创 安卓逆向学习——adb常用命令(Linux)

第用adb连接到虚拟机后,调用的Linux操作系统的shell。因为这些Android的运行环境,最底层是Linux内核。而内核就是提供系统操作的接口函数的代码块,这自然就是Linux的Shell接口命令了。具体命令ls 显示指定目录ls命令效果如下,是不是有点操作Linux的感觉了呢cd命令用于切换到指定的目录下cd 目标目录mkdir用于创建一个文件夹,我们实践一下。切...

2020-02-25 20:09:03 499

原创 安卓逆向学习——多开原理和实验

我们都知道Windows下的进程Pid是独一无二的,如果两个进程都有相同的的Pid,那么这两个个进程只有一个可以运行,另一个则不能打开。在Android体系下,包名也类似于这个Pid,所以我们想要在Android模拟器上实现相同程序多开,就需要在包名上做文章,可以考虑让相同程序的相同包的包名不同,那么是不是就能实现多开了呢?我们首先安装一个未被修改包名的APK到模拟上将这个APK拖入Andr...

2020-02-25 16:08:58 1036

原创 Android逆向学习——Smali代码

Smali代码的数据类型B---byteC---charD---doubleF---floatJ---longI---intS---shortV---voidZ---boolean[XXX---arrayLXXX/YYY---objectL代表这个数据类型是一个类,如Ljava/lang/String代表一个String类Smali的函数定义Func-Name (P...

2020-02-25 15:44:43 367

原创 安卓逆向学习——Dalvik虚拟机与Smali代码

首先我们要清楚JAVA虚拟机和Dalvik虚拟机的关系,我们想要我们的android程序运行在Dalvik虚拟机上首先需要选择一种语言执行的环境,Android开发目前最多用的就是JAVA语言,凯特琳语言也在飞速发展,也许以后可能就要取代Java在安卓开发的地位。JAVA代码想要运行在Java虚拟机上首先要编译成Class文件,Java虚拟机才可以识别程序命令运行程序。想要在Dalvik虚拟机上运...

2020-02-25 11:30:15 376

原创 安卓逆向学习——dex文件

DEX文件实际上就是Dalvik虚拟机的可执行程序,所以这个文件对于逆向分析工程师是十分重要的,因为我们需要对可执行文件进行调试分析结果。JAVA文件的编译过程是由.java文件生成.class文件,然后在进行编译,编译成.dex文件的过程。我们可以随便在一个文本文件中编写JAVA程序如下注意JAVA类名是什么,这个java文件名应该就是什么。而且如果出现中文最好用反编译工具转换成Unic...

2020-02-25 10:13:18 2454

原创 安卓逆向学习——APK结构

APK是Android系统上的一个安装文件,我们从网络上下载一个app应用时首先要下载它的安装包。这个安装包的本质其实还是一个打包好的压缩文件。我们在自己的电脑上下载好APK后,把APK后缀更改为.zip就可以直接看到内部文件的结构。编译后的apk文件看下编译前后的文件对应关系JAVA目录编译成了classes.dex文件,这个文件用于存放编译后的代码。res编译成了resources...

2020-02-25 07:49:51 1236

原创 安卓逆向学习——常用到的工具简介

ApkScan用于Apk扫描查壳,如下图,将Apk拖入该工具中就可以扫描是否apk有加固。安卓逆向助手逆向助手中有个lib文件夹,该文件夹下包含很多功能它可以用来反编译apk,将apk拖入程序,选择反编译,点击操作会出现如下情况。然后会弹出一个反编译后的文件夹如果在反编译apk的时候失败了,那么一般情况下是apktool版本过老或者过新,需要替换apktool文件夹下的apkt...

2020-02-24 21:48:58 576

原创 安卓逆向学习——SDK工具的安装与配置

逆向的起源于正向开发,没有正向的条件很难直接从逆向下手。在配置完JAVA开发环境后,想要进行Android开发还是不够的。因为JAVA开发环境工具包只提供了java代码运行环境和开发工具,我们要进行Android逆向,还需要快速开发Android的工具组件,这个时候我们就需要使用到Android SDK开发工具包。这里我从网上找到了对应的学习资源工具包,里面有eclipse IDE、Android...

2020-02-24 20:17:17 992 1

原创 安卓逆向学习——JAVA环境装配

选择版本号为jdk-8u121 x86和x64有一定区别。选择这个版本是为了配合使用JEB,JEB如果使用的jdk版本过高就会造成闪退现象,带来不必要的麻烦。我再下面的链接共享了逆向所用的jdk,大家可以随意下载使用。链接:网盘地址 提取码u7de注意在配置JAVA开发环境的时候,任何配置的路径都不要出现中文,否则可能会出现各种奇怪的问题。当安装成功后输入java会有java的提示证明jd...

2020-02-24 14:40:47 298

原创 常见程序入口点特征

#Delphi入口程序Delphi开头的入口程序是正常的压栈,然后调用一个E8字节类型的call0044CA98 > $ 55 push ebp0044CA99 . 8BEC mov ebp,esp0044CA9B . 83C4 F0 add esp,-0x100044CA9E . B8 B8C84400 mov eax,delphi7?0044C8B8 ; UNICODE “;...

2020-02-22 08:47:28 2263 1

原创 Windows下常见概念

0x1 SDK和DDKSDK(Platform Software Development Kit)汉语直译就是平台软件开发工具包,里面包含了对应的操作系统平台开发所用的API文档(应用程序接口)。DDK(Device Driver Kit)驱动开发工具包,顾名思义这个工具包包含了对应操作系统下的驱动开发的一系列开发工具。当我们开始对一个操作系统进行程序开发时,首先要清楚开发的是什么类型的程序...

2020-02-13 10:43:02 444

原创 服务调试

0x服务简介我们在进行一些程序分析时会发现有些程序会调用服务控制管理器,用服务的形式运行了一段代码,这就是常见的创建服务程序。它的核心原理就是首先在SCM(Service Control Manager)下创建一个子进程,让这个子进程执行我们第三方程序提供的代码。其中涉及的API有三个:StartService()、StartServiceCtrlDispatcher()、SetServic...

2020-02-11 00:06:48 420

原创 逆向资源代码示例分享

《逆向工程核心原理随书代码及示例》链接:https://pan.baidu.com/s/19PSXILaaz9up7NTehGbDKw提取码:fuz1复制这段内容后打开百度网盘手机App,操作更方便哦

2020-02-10 20:11:47 379

原创 NsPack 3.7

查壳,是NsPack压缩壳。直接拖入OD。老样子,开头有pushad和pushfd指令,首先使用ESP定律尝试脱壳。发现跨节跳转,执行到OEP位置进行手脱。跳转过后发现字节码是0x55开头,很明显是push ebp指令,删除模块分析重新查看反汇编。删除分析模块后的效果这时就可以传统的手脱步骤了。修改OEP和IAT表。内存Dump设置新的OEP。会出现以下莫名错误,两个脱壳器进...

2020-02-07 19:07:37 845

原创 ASPack 2.12

查壳,是ASPack2.12首先看到pushad第一反应是esp定律。在esp处设置硬件执行断点,然后F9执行到下图位置继续向下走,发现有个间隔很大的返回地址多半就是OEP执行到OEP进行脱壳设置OEP的RVA为0x1000转储IAT,对文件IAT进行修复。剪切掉无效指针转储到Dump文件中执行,查看执行效果,发现可以正常运行。...

2020-02-06 22:20:29 953

原创 !EP(EXE Pack)1.4.exe

首先查壳,显示是!EP(EXE Pack)1.4.exe将该壳拖入OD

2020-02-06 17:09:33 431

原创 脱壳 !EP(EXE PACK)1.2

0x1 查壳将程序拖入!Exeinfo PE显示如下。程序拖入OD看到第一行有pushad指令,利用ESP定律,执行一步F8。ESP定律是典型的堆栈平衡,因为只要保存了所有寄存器的值都是要开始解密操作,等到解密完成后一般都会将所有初始化的寄存器值进行还原,即popad。所以我们只要在esp堆栈压入的最后一个数据那里设置硬件断点(因为堆栈式先进后出原则,esp现在指向的是压栈的最后的数据,...

2020-02-06 14:19:09 806 1

原创 脱壳学习资源

Tuts4you论坛的脱壳动画pdf演示,很值新手进行脱壳学习。链接: https://pan.baidu.com/s/1GiLav9TZelEYcCGezx9aCQ 提取码: gbjb。

2020-02-06 09:00:46 337

原创 《操作系统真象还原》读书笔记 第4章

0x1 保护模式基本概念物理内存地址不能直接被程序访问,程序内部的地址(虚拟地址)需要被转换成物理地址后再去访问,程序对此一无所知。地址转换是由处理器和操作系统共同协作完成的,处理器在硬件上提供地址转换部件,操作系统提供转换过程中所需的页表。0x1.1 实模式不是32位CPU,变成了16位32位CPU具有保护模式和实模式两种运行模式,可以兼容实模式下的程序。兼容实模式,是指能够正确处理好实模...

2020-02-03 09:59:53 871 1

原创 Wireshark学习

0x1 Wireshark安装和下载老样子给出Wireshark下载地址Wireshark官网,下载完成后除了选择安装路径外都可以直接下一步默认安装配置。如果嫌下载慢我这还有刚下好的最新版本x64 v3.2.1,给大家带来便利网盘入口,密码:sayb我这里安装的版本是Wireshark v3.0.60x2 Wireshark的安置想要使用Wireshark首先要知道Wireshark部署...

2020-01-31 14:00:32 7388 1

原创 bochs调试方法

bochs一般用法bochs是一个开源x86虚拟机软件。在他的实现中定义了各种数据结构来模拟硬件,用软件模拟硬件速度慢。bochs的硬件调试体现在:1)可以查看页表、gdt、idt等数据结构2)可以查看栈中数据3)可以反汇编任意内存4)实模式、保护模式互相变换时提醒5)中断发生时提醒bochs中x和xp命令都是用来查看内存的,它们两个的区别在于x命令用于查看线性地址,而xp用来查看...

2020-01-29 18:28:00 2924

原创 《操作系统真象还原》读书笔记 第3章

0x1 地址、section、vstart0x1.1 什么是地址地址只是数字,描述各种符号在源程序中的位置,它是源代码文件中各符号偏移文件开头的距离。由于指令和变量所占内存大小不同,故他们相对于文件开头偏移量参差不齐。源码文件中各符号地址是由编译器来规划的。编译器的工作就是给各符号编址。编译器根据所在硬件平台特性,将源代码中的每一个符号(指令和数据)都按照硬件平台的特性分配空间,在不考虑对齐...

2020-01-29 15:17:08 1394

原创 网络学习的思考

学习原因这我对计算机网络学习的一个新的开端。说来惭愧,在大学四年中我只是不断学习理论知识,但是却从来没有想要自己动手实践过,导致毕业后的迷茫。现在我要重拾心态,好好将理论基础与实践结合,探索知识本源。还有一个原因,毕竟计算机网络算是传统四大学科之一,我这个人还比较笨,只有自己亲手实现一遍的东西才能算是有所了解。所以我思索再三选择首先学习网络抓包工具Wireshark,毕竟所谓的协议也都是人为规定...

2020-01-26 12:16:45 188

原创 《操作系统真象还原》读书笔记 第2章

0x1 计算机启动过程为什么程序要载入内存CPU的硬件电路被设计成只能运行处于内存中的程序,是因为内存内存运速快,且容量大。其次,操作系统可以存储在软盘上,也可以存储在硬盘上,甚至U盘什么是载入内存所谓载入内存,大致上分为两部分:1)程序被加载器(软件或硬件加载到某个区域)。2)CPU的cs:ip寄存器被指向这个程序的起始地址。操作系统在加载程序时,是需要某个加载器来将用户程序存储到...

2020-01-25 21:54:26 431

原创 《操作系统真象还原》读书笔记 第1章

0x1 工作环境部署0x1.1开发操作系统的环境及工具1)gcc编译器2)汇编语言编译器nasm3)VMware workstation Pro v15.1.0 build-135910404)Ubuntu 14.04 LTS5)bochs v2.6.9为了方便起见,我是用的是WMare+Ubuntu进行开发(纯属个人习惯),具体安装Ubuntu的步骤我就不在这里细说了,大家百度一下...

2020-01-24 10:59:24 685

原创 《操作系统真象还原》读书笔记 第0章

0x1 软件访问硬件的方法软硬件之间的访问是依赖于各种硬件设备,也就是IO接口。接口就是生产硬件的标准,所有硬件必须按照这个标准才能让软件和硬件互通。硬件在输入输出上分为并行和串行两种方式,相应接口也就是串行和并行接口。串行硬件通过串行接口与CPU通信,CPU通过串行接口与串行设备数据传输。并行同理,只有接口不同的差异。访问外部硬件的两种方式:1、将某个外设的内存映射到一定范围的地址空间中...

2020-01-23 19:55:52 598 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除