- 博客(43)
- 资源 (6)
- 问答 (1)
- 收藏
- 关注
原创 Frida操作java类的一些记录
Frida操作java类的一些记录这篇笔记主要记录在使用Frida写一个测试框架中会需要的Api的使用方法,包括了何时执行获取当前系统的信息获取所有加载到当前进程的类信息获取app的所有加载的类获取app加载的所有so模块获取app类的方法获取加载模块的方法操作一个java类对象修改java的函数参数修改java的函数的返回值何时执行为了保证能正常运行,需要使用如下方法执行以确保不会发生ClassNotFoundException等异常。 code_01.jsJava.pe
2020-07-02 15:48:33
5769
原创 使用x64dbg调试dll程序
使用x64dbg调试dll程序这篇笔记是根据Lab16使用x64dbg调试带参数程序新增加的,记录了如何调试一个dll文件。在很多时候一些程序会将核心功能放在dll文件内来完成,这样避免程序被查杀或者被逆向分析,主要手段是通过LoadLibrayA函数来加载一个dll文件,同时这个dll的DllMain函数会被调用以此来达到执行dll的程序。在Windows上要独立执行一个dll程序,那么需要用到rundl32.exe来完成,因此可以借助这个程序来达到调试dll的目的。分析dll程序的启动方式这个
2020-05-26 17:55:19
7092
原创 Lab16使用x64dbg调试带参数程序
Lab16使用x64dbg调试带参数程序在分析一些样本的时候,无论是.exe / .dll程序,或多或少都需要给程序添加参数。尤其是通过命令行给参数使得程序运行起来的。这篇笔记主要记录的两个调试方式调试带参数启动的.exe程序调试带参数启动的'.dll'程序 看下一篇文章今天分析的程序是来自《恶意代码分析实战》的第十六章实验,第二个程序是一个crackme的程序,本来这个样本的重点是关注反调试部分的知识点,笔者在分析的时候发现这个有一个知识点–如何使用x64dbg调试带参数启动的程序,因此这里就
2020-05-26 17:51:42
3791
原创 恶意样本分析-Lab16-01 反调试1分析
恶意样本分析-Lab16-01 反调试1分析这个样本是随书《恶意代码分析实战》第十六章的样本,主要用来熟悉反调试的一些手段,这个算是样本分析中需要掌握的基础知识。这篇笔记会包含了静态分析和静态分析。基本要求在分析这个样本之前可以先看一下恶意样本分析–16Windows中一些常用的反调试记录静态分析静态分析就不做PE信息的分析,直接走IDA分析,这个过程尽量不走伪代码分析,分析汇编指令,便于在x64dbg上分析时快速定位。由于已经在第九章分析了,因此这里关注到反调试手段。首先来到入口处看到关键指令
2020-05-25 19:04:17
530
原创 恶意样本分析--16Windows中一些常用的反调试记录
Windows中一些常用的反调试记录这里笔记会记录一些关于Windows中的反调试技术的汇编代码,方便后续分析程序时回来查看。反调试技术包括Windows APIs 调用其他手段检测调试器Windows APIsIsDebuggerPresent这个函数主要检测的是PEB的IsDebugged标志,如果返回非零值则表示被调试CheckRemoteDebuggerPresent这个函数和IsDebuggerPresent函数一样也是检测PEB->IsDebugged状态值, 不过还可
2020-05-25 18:09:39
577
原创 Lab15 恶意样本分析-常用的反汇编总结
Lab15-01 常用的反汇编总结在《恶意代码分析实战》的第十五章总结了一些常见的反汇编案例,包括线性返回编译器和非线性返回编译器的对抗。这里总结了其中提到的几个原理,每个都配合着实验了说明,这篇笔记只是我在做分析时的一些总结,方便后续回来看。相同目标跳转指令问题在x86汇编指令中,无条件跳转指令jmp是跳转指令之一。在一些恶意样本中会针对的插入一些指令来完成这个无条件跳转,如下从上面的指令看处,jz jnz都是跳转到了call的下一条指令,但是这里有一个问题,如果跳转指令要跳转到一个函数,不可
2020-05-22 19:03:25
692
原创 Windows7 64bit安装IDA pro 7.0插件整理
Windows7 64bit安装IDA pro 7.0插件整理对于常用的逆向工具ida,很多时候使用插件能加速分析的速度,例如一些算法的标识,两个样本存在的关联性,yara的使用等,这个笔记是整理一些在日常分析中使用的插件安装过程和使用的方法,虽然比较简单,入门基本够用了。FindCrypt3标识一些常用算法的插件,地址(https://github.com/polymorf/findcrypt-yara)安装安装python2.7.11安装idasdk7.0到ida安装目录将sdk复制到安
2020-05-21 18:46:31
1986
原创 Lab12-01-恶意样本分析-简单进程注入分析
简单进程注入分析样本来自《恶意样本分析》Lab12-1.exe Lab12-01.dll运行程序后,发生了什么?观察程序运行信息,会弹出一个对话框提示Press Ok to reboot,点击确认后会再次弹出,可以肯定程序是应该有一个循环,每次弹出对话快之后就等待,如果对话框没被关闭,会重复弹出,如果关闭了,则会在定时器触发后再次弹框。哪个进程被注入了这个在运行时没有准确定位到,对比了可以的程序并没有发现,需要实际逆向分析程序。分析后可知,explore.exe被注入加载dll如何关闭弹窗需
2020-05-21 18:43:17
507
原创 Lab12-02-03-恶意样本分析-简单的键盘记录程序分析
简单的键盘记录程序分析**样本来自《恶意样本分析》Lab12-2.exe **Lab12-03.exe和dump出来得payload.exe是同一个程序不是很复杂很适合用来练手,对于新手很友好????程序的目的是什么这是一个键盘记录的恶意程序。程序是如何隐藏自身的程序创建了一个svchost的进程来运行恶意代码的payload放在那里加密保存在资源文件内程序是如何被保护的将实际的Payload保存在资源内,通过异或加密保存字符串是如何把被保护的字符串在资源文件的payload内,被
2020-05-21 18:37:08
376
原创 Lab12-04恶意样本分析--更新下载器分析
恶意样本分析–更新下载器分析这个样本是一个更新模块,运行程序后会自动下载相关的模块并且自动运行。现象程序运行后,启动了浏览器,同时看到创建了一个名为wupdmgr.exe的进程由于我的环境设置了过了,网络没有打开,之后进程wudpmgr.exe会自动退出分析分析母体使用ida打开样本后,首先获取EnumProcessModules,GetModuleBaseNameA,EnumProcess三个APIs的函数指针接着调用EnumProcess函数枚举进程并调用sub_401000查找目标
2020-05-21 18:26:13
368
原创 恶意样本脱壳-GandCrab2.0 脱壳笔记分析记录
GandCrab2.0 脱壳笔记分析记录有人在2018年的时候就分析过了恶意样本分析,相关资料可以查看参考部分。由于里边有很多可以学习和总结的脱壳技术,因此重新分析这个样本,这篇文章暂时不做加密和勒索实际功能分析,如果要看分析样本形成勒索的过程以及相关分析报告,可以直接跳到参考部分,这篇文章主要关注的是脱壳相关的一些技术细节的分析,由于文章是我个人的一些分析和总结,因此会有一些不足,比较趋向于像我这样刚接触恶意软件分析,由于很多样本在分析前需要脱壳之后才能看到核心功能,因此这里重点关注脱壳过程,主要内容如
2020-05-20 11:03:22
768
原创 一款简单的反向shell恶意样本分析
一款简单的反向shell恶意样本分析样本来自《恶意软件分析实战》第九章的的实验二。静态分析基本信息查看样本信息,发现程序没有加壳,使用VC++基编写编译时间2011/041/30接着查看字符串,没有发现有用的信息,如下静态分析使用ida分析来到入口函数,发现初始化了一堆参数接着调用GetModuleFileNameA函数获取样本执行的路径,并判断当前样本的名称是否为ocl.exe,如果不是则退出如果相同则创建socket链接,否则退出。这里进入创建socket链接在调用ge
2020-05-14 18:13:14
323
原创 恶意软件分析基础-PE文件简单分析记录
PE文件简单分析记录通常在分析一些样本时会遇到如下程序Handle hImageBase=LoadLibraryA("Kernel32.dll");void* aAddr =hImageBase+0x3c;void* bAddr=aAddr++0x78;的调用,为了能更理解在运行时的解析操作,使用010Editor进行分析了exe文件。DosHeader这个是整个PE文件的头部,通常加载一个exe或者dll获取的base地址就是这个头以MZ标志开头,表示这个一个PE文件。如果要读取Ri
2020-05-11 17:38:36
1047
原创 简单COM恶意组件分析
简单COM恶意组件分析什么是COM组件COM组件是微软的一个接口标注,全称是组件对象模型(Component Obejct Model),它可以使不同的软件组件在不知道其他组件代码的接口规范时,进行相互间的调用。COM可以支持任何编程语言,因此被设计成了一个可复用的软件组件。COM组件的基本分析每个程序在调用COM组件之前,都需要进行一系列的初始化工作,常用的函数包括了OleInitialize或者CoInitializeEx函数进行一个组件的初始化,之后才能对响应的COM组件使用。在分析一个C
2020-05-11 14:52:38
577
原创 Windows恶意软件分析-基于感染主机的特征
基于感染主机的特征Windows 文件系统利用ProcMonitor检测 opertion->CreatFile \ReadFile常用的函数包括:CreateFile 打开或者创建一个文件,根据dwCreationDisposition标记来确定创建文件还是打开文件ReadFile 读取文件内容WriteFile 写内容到文件CreateFileMapping 将一个文件映射到内存中MapViewOfFile获通过CreateFileMapping函数映射的文件指针通常有这些函数调
2020-05-11 11:57:29
529
原创 简单的定时DDOS攻击样本分析
简单的定时DDOS攻击样本分析本次分析的样本来自《恶意软件分析》课后实验–Lab-7-01中的程序,将样本载入到DIE内查壳,如下程序无壳,使用的VC++6.0编写,看到编译时间为2010/09/30说明这个样本已经很老很老了。将样本载入到IDA内分析相关功能,来到入口函数Main出,程序首先调用了StartServiceCtrlDispatcherA启动了一个名为MalService的服务,接着服务会执行函数sub_401040,启动完成服务后,会再次调用函数sub_401040,如下下面开
2020-05-08 19:13:31
394
原创 Pe文件静态分析
Pe文件静态分析能够获取到哪些信息在分析一个样本之前,通常会需要静态分析,如何从PE文件格式中获取到需要的信息就很重要。只有在静态分析时对文件的一些布局信息有了理解,例如是是否被加壳了(虽然可以用查壳工具,但是还是需要知道一些原理),文件时图形化界面(GUI)还是命令执行程序(CUI)等信息的提取和掌握,分析时才会更清晰要做什么,做到心中有数。下面是在阅读《恶意软件分析实战》第一章中的一些整理笔...
2020-05-02 16:04:28
1581
原创 使用VirualBox搭建ubuntu16.04+Windows流量分析系统
使用VirualBox搭建ubuntu16.01+Windows流量分析系统在分析恶意软件时,通常要捕获一些流量信息,但是如果样本运行后可能会导致虚拟机系统奔溃,因此在victim中捕获流量不是一个很好的选择,因此这里搭建一个网络流量捕获系统,在运行时捕获恶意样本的网络请求流量包。具体步骤如下安装VirtualBox安装ubuntu16.04安装Windows xp sp1 32网络设...
2020-04-28 19:06:20
261
原创 OpenRasp源码分析-java功能
OpenRasp源码分析-java功能最近在做关于后台服务器和web的rasp这块工作,需要在OpenRasp的基础上做一个二次研发,为了能弄清其实现的技术细节,阅读了一下源码。记录的内容主要有以下几个点RaspIntall.jar的功能启动执行流程核心原理检测规则其他整个OpenRasp的基本就是上述几个过程。其中重点关注的是启动执行流程,核心原理,检测规则三个点,下面就一个个的...
2020-04-23 18:54:12
2060
原创 OpenRasp Java运行时修改字节码技术
Java运行时修改字节码技术Java运行时动态修改字节码技术,常用的有javassist asm来实现。不过最近在分析openrasp-java这块时,程序使用的javassist来动态插桩关键类,达到监控某些程序的行为,OpenRasp使用这个技术来实现了监控程序的行为。为了分析OpenRasp和理解其使用的技术原理,先做一个java动态修改指令基础知识的补充。第一个程序有如下程序pac...
2020-04-20 18:25:06
763
原创 GDB分析数组索引错误导致Segmentation fault
GDB分析数组索引错误导致Segmentation fault最近学习gdb调试的知识,使用gdb调试core文件分析C语言数组索引错误所引发的segmentation fault原因。分析前准备设置core dump的大小。默认的core dump大小是0字节,也就是出现了segmentation fault是看不到Core转储文件的。查看core默认大小ulimit -c修改c...
2019-09-19 11:36:23
791
原创 GDB debug tcpdump 3.8.2
Ubuntu 14.04dependenciesYou need installed sctp libs.sudo apt-get install libsctp-devsudo apt-get install lksctp-toolsbuild test:gcc sctp_server.c -lm -lsctp -o serverreference:https://www.2ct...
2019-07-03 18:08:19
218
原创 GDB Hacks读书笔记 第二章--调试前的必会知识__必需的栈知识-x86
GDB Hacks读书笔记 第二章–调试前的必会知识__必需的栈知识-x86这部分知识点的理解对于后续调试程序由很大的影响。每个函数自身的栈以及调用者和被调用者之间的栈关系,函数调用时参数传递规则,被调用函数内部变量是如何分配的等。环境使用32位虚拟机ubuntu 14.04 32bit gcc 4.8.4使用的函数使用如下命令编译gcc -g fun_.c栈在调试时...
2019-07-01 18:45:59
252
原创 GDB Hacks -- i386参数入参顺序
GDB Hacks – i386参数入参顺序在i386CPU中调用函数时,参数的传递顺序是什么?类似函数中括号内的参数一样,从左到右依次入栈还是从右到左入栈。将通过gdb的方式来观察参数的传递过程。如下例子使用编译命令编译gcc -g func_param.c使用gdb调试运行,观察参数入参顺序。Tips在使用gdb的break命令时,如果指定函数名的方式下断点break ma...
2019-07-01 18:33:12
307
原创 android常用shell命令
android常用shell命令记录一些常用adb shell下的命令查看手机ipnetcfgshell@hammerhead:/data/data/c # netcfgwlan0 UP 1xx.x0.154/16 0x00001043 cc:fa:00:e5:f4:1b ##实际的ip地址lo UP ...
2019-06-17 19:25:09
830
原创 常学习网站
常需要访问学习的网站Corelan TeamC & C 的博客fortineenigmagroupexploit-dbunit42ARM 学习 azeria-labs
2019-06-12 09:48:21
211
原创 ida添加JNIEnv等结构体--arm64 arm32 x86 x86_64
ida pro7.0导入jni.h在使用ida逆向android的so的时候,如果使用的是ida pro7.0的版本并且逆向的so是arm系列的,例如arm64-v8a和armeabi-v7a的由于缺少JNIEnv等结构,反编译后查看函数就变得很不友好,armeabi-v7a的还比较人性化,会自动添加JNIEnv等结构体,如下armeabi-v7a x86选中int然后按下y就能修改成为...
2019-03-20 15:05:24
3985
原创 移位操作--逻辑左移、逻辑右移、算术右移
常常会混淆移位操作的概念,因此在这里记录下测试层析public class Main { public static void main(String[] args) { System.out.println("Hello World!");// testSwitch(); testShfit(); } /** ...
2019-03-08 00:47:29
3778
2
原创 idapython常用api记录7.0
2019-02-13 idapython常用api记录以下代码片段可以在ida的output窗口中测试用,需要引入相关的模块即可。import idaapiimport idcimport idautils后续需要使用的程序代码指令0017C24 CODE32LOAD:00017C24LOAD:00017C24 ; ==============...
2019-02-13 18:49:05
3743
原创 pwnable-kr_fd
###pwnable.kr–题目一fd题目来自pwnable.kr的Toddler’s Bottle的第一题fd。#####根据要求并登录题目系统在进入到pwnable.kr系统后,第一题为一个名为fd的题目,题目图要求提交一个flag,而flag就保存在提供的系统能。使用ssh登录即可查看到对应目录下的文件。如下ssh fd@pwnable.kr -p2222要求输入密码为:guest...
2019-02-12 18:39:52
273
原创 如何通过chrome来找到猫眼电影评论url
1、 首先进入猫眼官网之后,点击要查看的电影例如这里查看《白蛇:缘起》的影评,按下f12后,发现没有对应的影评接口,发现这样是不能抓到评论请求的url。2、 使用chrome的手机调试模式1、 f12之后找到如下图标,打开chrome的手机调试模式打开之后,可以看到在顶部的位置可以选择不同的手机作为当前的调试f5刷新一下,即可进入手机app的模式了,往下滚动,就能看到共有多少条评...
2019-01-30 16:16:36
4651
5
原创 Native api hook参考资料文档
Native api hook技术分为两种类型的Hook,GOT-hook和inline-hook,以下是一些参考资料,主要针对armeabi-v7a,arm64-v8a系列CPU。GOT-HOOK参考文档:开源框架xhookxhook的原理是GOT-HOOK的一种称为PLT(Procedure Linkage Table)过程连接表Hook。Github地址:https://g...
2018-11-19 18:19:12
659
原创 ubuntu14.0.4安装drozer
环境Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntujdk java version “1.6.0_45”python2.7drozeragent.apkandroid4.4.4 (nexus5 rooted)下载drozerdrozer下载地址这里选择 drozer (Debian/Ubuntu Archive) 版本,将下...
2018-11-13 16:04:14
1168
1
原创 C语言获取字符串的32位md5值
代码是从网上获取来的,放在这里是方便自己使用。头文件#ifndef MD5_H#define MD5_H#ifdef __cplusplusextern "C" {#endiftypedef struct{ unsigned int count[2]; unsigned int state[4]; unsigned char buffer[64];}...
2018-11-02 17:37:42
1750
原创 C语言常用函数
字符串转为16进制字符串/** * 字符串转为hex字符串 * * @param dst 返回值 32位长度的字符串 * @param src 原始字符串 * @param src_len 原始字符串长度 * **/void str2hex(unsigned char *dst, unsigned char *src, int src_len) { if (src_len ...
2018-11-02 17:32:30
637
原创 Android Socket通信read阻塞解决办法
使用android的socket和服务端通信通常在使用socket和服务端的通信时,在调用getInputStream的read方法时,通常会造成阻塞。如下代码try { LogUtil.e("发送..."); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStream...
2018-11-02 17:23:32
3813
2
原创 C语言使用strtok函数分隔字符串
C语言使用strtok函数分隔字符串在C语言编程中,通常需要处理字符串问题,包括查找strchr和分隔strtok函数以及转换函数atoi等,其中strtok函数在使用的时候容易犯错,如下void strSplit(char* content){ char s[] = "aa,bb,cc";// 使用数组就能切割成功,使用指针就失败?? why?? char *delim =...
2018-10-30 13:58:09
1472
原创 移植xposed_art到Android5.1.0_r1系统
移植xposed到Android5.1.0_r1源码下载Android源码编译-android-5.1.0_r1搭建编译源码环境即可并能正确编译源码。同步xposed源码在下载好android-5.1.0_r1源码并编译能正常刷机后。同步xposed相关源码,这里同步的分支为lollilpop-mr1分支。 同步xposed分支 ,源码在xposed源码,这部分主要...
2018-08-30 19:33:40
1072
原创 android高版本系统源码下载和编译刷机
下载android系统源码和编译–从清华源下载源码 系统 ubuntu16.04 每次都要各种百度,然后再一次记录,索性这次在编译xposed和android系统源码时一次性全部记录下。包括如何设置清华源,如何下载指定的版本、如何编译不同版本所需要的环境支持等,以及刷真机需要的文件和注意事项。 在编译和刷机之前要先下载源码...
2018-08-23 19:49:59
1455
原创 C语言--宏定义和inline学习
编译器使用的是gcc。在学习C语言的宏定义和inline关键字修饰函数时,为了能很好的明白二者的区别,所以这里就记录下二者在预处理时生成中间文件的区别。宏定义:优点:不会生成中间代码,在调用处会直接替换掉指定的宏名称缺点:不会检测传入的参数合法性和参数的类型,只是在调用的位置进行了简单的替换生成中间文件的区别 1.宏定义 使用宏的方式很简单,通过关键字#d...
2018-08-19 16:30:39
590
sublime text 3 build 3143 注册码
2017-09-16
nasm.exe,ndiasm.exe
2017-07-06
在连接虚拟机是提示要重启adb
2015-10-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人