CrayBlog 
  • Home
  • Archives
  • Categories
  • Tags
  • About
  •     
SEH创建与查找

SEH创建与查找

创建一个SEH处理函数 #include "stdafx.h" #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <stdio.h> #include "stdlib.h" DWORD scratch; EXCEPTION_DISPOSITION exceptHandler(struct _EXCEPTION_RECORD *ExceptionRecord, void * EstablisherFrame, struct _CONTEXT *ContextRecord, void * DispatcherContext) { unsigned i; MessageBox(0,_T("i am in except!!!"),0,0); ContextRecord-&
 2019-08-26   逆向    SEH  Windbg 

win32程序设计

最小的一个窗口 #include "windows.h" HINSTANCE g_hInstance; LRESULT CALLBACK MainWndProc(_In_ HWND hWnd,_In_ UINT uMsg,_In_ WPARAM wParam,_In_ LPARAM lParam) { //每一个发给这个窗体的消息,通过不同的uMsg消息来做不同的动作,wParam和lParam保存的是这个消息的具体参数 switch(uMsg) { case WM_CREATE: //这里可以添加创建时的界面选项,不要做耗时操作。 break; case WM_CLOSE: break; case WM_COMMAND: break; case WM_LBUTTONDOWN: MessageBox(0,"单击后的效果","Title",MB_OK); break; c
 2019-08-25   编程    Win32  回调函数 

简单的加密壳

一个简单的加密壳笔记 基本思路 提示框,点击 “是” 后壳开始解压程序代码 有一个call来还原这个原程序的IAT表,而这个壳也是只加密了他的IAT 进入这个call后,找到GetProcessAddress函数,这个函数的返回值保存在eax里面,这个eax才是我们需要的地址,但是这个壳是把他xor加密后,存到一个virtualalloc的地址里面,然后再在这里面进行xor解密回来 。 判断一个壳是否脱完,要检查导入表是否是恢复完全的。 脱壳脚本代码// 初始化变量 // 临时变量,用来保存API地址 MOV dwEAX,0 // 当EIP执行到这个地址的时候API放在EAX中 MOV dwGetProcAddr,0049d5bf // 当EIP执行到这个地址的时候IAT刚刚被填充为申请的那段内存地址 // 其地址中保存的是加密后的API地址,以及动态解密代码 MOV dwWriteIATAddr,0049d5f0 MOV dwOEPAddr,0044848d // IEP执行到OEP就可以dump了 // 清除所有软件断点 BC // 清除所有硬件断点 BPHW
 2019-08-23   docker    脱壳 

MASH和内联MASH

开始前一定先了解下汇编的种类https://blog.csdn.net/ye1223/article/details/79060434 我这里只简述我学习的MASH汇编和内联的MASH格式的汇编 mash 汇编如下下面程序的目的是遍历Kernel32模块的导出函数和基值,在shellcode中可以用到 .386 .model flat,stdcall option casemap:none ; 包含printf函数所在的头文件和库文件 include msvcrt.inc ; 微软vc运行时库的头文件, ; 一般包含的时c语言的各个头文件 includelib msvcrt.lib ; 包含头文件所对应的库文件 assume fs:nothing .const ; 全局常量 g_formtStr db "%-40s ",0 g_formtInt db "%d ",0ah,0 g_formtHex db "%08X ",0ah,0 .code GetA proc LOCAL @
 2019-08-22   编程    shellcode  内联汇编  mash 

调用dll和编写dll的几种格式

dll的写法一共两种 全部写在dllmain函数内extern "C" _declspec(dllexport)DWORD Sum(int nArg1,char*nArgv2) { MessageBox(0,"this Sum call",0,MB_OK); return nArg1; } extern "C" 表示使用C的编译方式编译,C++格式 _declspec(dllexport)将一个函数申明为导出函数 就申明了一个导出函数 但是这中创建的dll的导出函数序号是连续的,我们不可控的。也就是Base是1,然后符号表从1 开始。 2项目新建 添加一个def文件def中的代码 LIBRARY "def导出函数Demo" EXPORTS test1 @1 test2 @5 test3 @8 dllmain中的代码 // dllmain.cpp : 定义 DLL 应用程序的入口点。 #include "stdafx.h" void test3() { M
 2019-08-20   编程    dll 

PE的一些结构笔记

实模式开电脑一瞬间,就处于实模式,1M寻址 dos 使用实模式 保护模式windows在保护模式 windows me 是windows 9x系列的最后一个 windows NT 2000以后的 现在的都是NT系列的 不同进程使用操作系统的共享地址 com 的特点就是没有特点 PE格式解释有用的字段 dos头的最后一个双字,指向PE头的起始地址 File header的大小永远是固定的20字节,下面4个字段比较重要 Machine:表示这个程序是什么架构的 NumberOfSections:表示这个程序有多少个节 SizeofOptionalHeader:表示optionsHeader的大小 Characters:表示这个程序的一些特性 Optional header :是必要的头介绍一下重要的属性AddressOfEntryPoint:程序执行入口的RVABaseOfCode:代码节的起始RVAimageBase:程序的建议装载地址SectionAlignment:内存中的节的对齐粒度FileAlignment:文件中的对齐粒度MajorOperatingSystemVersi
 2019-08-20   课堂学习    PE 
IDA制作签名

IDA制作签名

我这里使用的是IDA6.8的制作签名包如果我们知道是什么语言 的,但是没有签名包,就自己做一个 手工方式:1.pcf.exe source.lib XXXX.pcf 2.sigmake.exe XXXX.pcf YYYY.sig 这里一般会生成一个XXXX.exc的文件,打开它,删除以;开始的几行,保存退出 3.再次执行sigmake.exe XXXX.pcf YYYY.sig,就会看到有YYYY.sig的签名文件了然后把这个文件拷贝到IDA目录下的sig文件夹下面接着重启IDA,拖入自己的项目,按shift + F5 打开签名文件管理器,右键添加就可以了 脚本网上有脚本,但是运行不了,我小改了一下,效果还不错 如果要制作单个sig的话,可以直接使用脚本中的lib2sig.bat用法: lib2sig.bat vclibxxx.lib直接生成一个sig文件 链接: https://pan.baidu.com/s/16vuDXs298KBNT7LzRJnwLw 提取码: f2by
 2019-08-18   逆向    IDA 

call的几种传参方式

stdcall 参数使用栈,平衡是在函数内,通过函数内的最后一个retn X来平衡,这个X用来指定pop几个字来平衡堆栈 cdecl 栈传参,函数外平衡堆栈 fastcall 是通过寄存器,因为是寄存器fast嘛 下面这种call是用在有类对象引用的时候来表示传参的thiscall 是用ecx来穿this指针的,一般都是 类似lea ecx [ebp+var_20]进入函数函数后 ecx就能会直接拿来用,不会再次赋值。 识别参数个数1.点亮call后依次进去看调用的方式,非stdcall则再看参数的中占用大小2.划分push 的归属3.遇到栈平衡相关指令。点亮push核对下已分配是否有误4.注意识别出某些push为下一个函数所用5.另外还要看某push归属于某个函数的最后参数却不使用的参数不确定的可以call进函数里,看看最后函数返回的时候堆栈平衡的参数大小,来确定传入参数
 2019-08-10   逆向    传参方式 

调试dll的两种方法

首先把dll调起来看看 方法一自己写loadlibrary()和GetProcAddress()来加载dll。 编写有一个导出函数的测试 的 A.dll // dllmain.cpp : 定义 DLL 应用程序的入口点。 #include "stdafx.h" extern "C" _declspec(dllexport)DWORD Sum(int nArg1,char*nArgv2) { MessageBox(0,"this Sum call",0,MB_OK); return nArg1; } BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_P
 2019-08-10   逆向    调试dll 

vulnhub 靶机系列 dc-2

靶机地址 网络拓扑我在这里使用VM虚拟机来搭建环境 攻击机为 Parrot 使用桥接本机无线网卡 IP:192.168.43.230/24 靶机为 dc-2 使用桥接本机无线网卡 开始测试主机发现扫描主机详细信息,发现有web服务和一个修改了端口的ssh根据作者的说明,需要parrot的hosts文件,才能正常访问web网站修改后记得重启网络 service netwoking restart,访问 http://dc-2 成功找到flag1发现是Wordpress框架的网站,那就直接上Wpscan,但是parrot或kali虽然自带,但是都需要update,但是会出现请求超时(搭梯子都不行),直接开始枚举用户名发现有三个用户名 admin jerry tom把他们都保存到保存到一个文本里,后面的爆破需要用到这里有点坑,用常用字典跑步不出来,然后认真读了下flag发现作者提示使用cewl来搜集密码。。。这里保存到pass.txt然后是爆破对应密码,docker wpscan使用见下文很不错,跑出来了两个,如图所示wordoress 后台地址默认是 /wp-admin,先使用tom登
 2019-06-15   CTF    linux  web渗透  靶机 
  • 上一页
  • 下一页

搜索

Hexo Fluid