获取证书信息验证文件数字签名是否有效可以使用函数WinVerifyTrust,可以用:取得文件数字签名证书信息需要使用函数CryptQueryObject,再用CertFindCertificateInStore获取证书Cert也可以通过,WTHelperProvDataFromStateDataWTHelperGetProvSignerFromChainWTHelperGetProvCertFr
win驱动下过滤器原理:简单说就是电脑一般真实设备只有一个,像键盘,但有的说一个电脑有多个键盘。多个键盘分别是多个不同的真实物体。而真实设备对应多个设备对象。多个设备共同组成一个设备栈。不能的设备对应不同的设备对象。如键盘与鼠标是不同的设备对象。设备对象上层是驱动对象。每个设备对象只有唯一的驱动对象。驱动对象有多个设备对象。如一个驱动对象有键盘,鼠标设备对象。一般通信是用户层调用api去访问相应的
环境:win1064位先关签名bcdedit.exe/setnointegritycheckson1。缓冲区方式读写pDevObj->Flags|=DO_BUFFERED_IO用户层main.cpp#include<windows.h>#include<stdio.h>#defineGetFilePointer(hFile)SetFilePointer(hFile,0
#include<Windows.h>#include<stdio.h>#include<string>#include<psapi.h>#include"dbghelp.h"//#include"imagehlp.h"#pragmacomment(lib,"dbghelp.lib")#pragmacomment(lib,"Imagehlp.lib"
分析快速系统调用的位置intmain(){CreateFile(L"C:\\1.txt",FILE_ALL_ACCESS,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);return0;}直接在CreateFileW上下断点进入之后,能够看到进入之后,能够看到这个SYSENTER就是三环世界的边缘地带了,OD就无法继续分析了。在SYSENTE
#include<ntifs.h>//获取操作系统版本ULONGKernelGetVersion(){ULONGNtBuildNumber;RTL_OSVERSIONINFOWosi={sizeof(RTL_OSVERSIONINFOW)};RtlGetVersion(&osi);returnosi.dwBuildNumber;}//获取时间VOIDTest_GetCurren
#include<ntifs.h>//创建键voidRegCreateKey(LPWSTRKeyName){OBJECT_ATTRIBUTESobjectAttributes;UNICODE_STRINGusKeyName;NTSTATUSntStatus;HANDLEhRegister;RtlInitUnicodeString(&usKeyName,KeyName);Init
0环通常来说有俩种:IO定时器IoInitializeTimer初始化一个IO计时器IoStartTimer启动IO计时器IoStopTimer停止IO计时器#include<ntifs.h>KEVENTg_kEvent;VOIDDriverUnload(PDRIVER_OBJECTpDriver);VOIDTimerProc(DEVICE_OBJECT*DeviceObject,PV
3环#include<stdio.h>intmain(){char*ch="allenboy";printf("%c,%x",ch,ch);getchar();printf("%c,%x",ch,ch);getchar();}0环#include<ntifs.h>VOIDDriverUnload(PDRIVER_OBJECTpDriver);//根据PID返回进程EPROC
线程创建#include<ntifs.h>KEVENTg_kEvent;VOIDDriverUnload(PDRIVER_OBJECTpDriver);VOIDThreadProc(PVOIDStartContext){ULONGuId=(ULONG)PsGetCurrentThreadId();KdPrint(("%wZ,%d\n",StartContext,uId));//执行即将
1。先要声名一些函数(已经导出)//1.声明要使函数NTKERNELAPINTSTATUSPsSuspendProcess(PEPROCESSpEProcess);NTKERNELAPIUCHAR*PsGetProcessImageFileName(INPEPROCESSpEProcess);NTKERNELAPINTSTATUSPsResumeProcess(PEPROCESSpEProcess
创建文件//创建文件HANDLEKernelCreateFile(INPUNICODE_STRINGpstrFile,//文件路径符号链接INBOOLEANbIsDir)//是否为文件夹{HANDLEhFile=NULL;NTSTATUSStatus=STATUS_UNSUCCESSFUL;IO_STATUS_BLOCKStatusBlock={0};ULONGulShareAccess=FILE
1。调用门在gdt表中在dgt表中注册一个回调函数然后调用提权与中断相同操作nt!DbgBreakPointWithStatus+0x4:83eb2110ccint3kd>rgdtrgdtr=80b95000kd>dq80b95000L3080b9500000000000`0000000000cf9b00`0000ffff80b9501000cf9300`0000ffff00cffb0
中断门在idt表中因此构造一个函数把函数地址给它然后产生一个中断就实现了提权1。查看nt!DbgBreakPointWithStatus+0x4:83eb2110ccint3kd>ridtridtr=80b954002.查看表kd>dq80b95400L3080b9540083e78e00`00085fc083e78e00`0008615080b9541000008500`005800
测试源码#include<ntddk.h>VOIDDriverUnload(PDRIVER_OBJECTobjDriver){//避免编译器关于未引用参数的警告UNREFERENCED_PARAMETER(objDriver);//什么也不做,只打印一行字符串KdPrint(("MyDirverisEnding..."));}NTSTATUSDriverEntry(PDRIVER_OB
tls处理tls回顾https://www.cnblogs.com/iBinary/p/7697355.html先简单说下1。PE目录表第10项为tls目录它指向tls表,tls表保存在rdata段表的一些地址又指向另外的地址就是tls数据段2。有个这个消息之后,如果压缩所有,有几个问题:第一rdata很定要压缩,但压缩完后表也就没了第二有的程序本就没有线程也就对应着没有索引数组第三tls被我处理
思路:由于ADS提供读写可以把脚本写在ads中然后用解释器执行来源:http://www.freebuf.com/articles/73270.html
1。打开游戏查看特征发现不是真正的exe程序发现这个才是找特征先到代码段搜索字符串找到一些打开浏览器都下断运行发现断不下来,那就到每个call里下断再次运行断下来了但这个是一个死循环这个才是点击游戏的回调f8出现可疑字符串继续又出现可疑字符串到文件里改名运行试试果然是的但是再次启动最开始那个程序报错不管它直接分析新程序
1.它有反虚拟机在vm中要修改下配置配置代码在最后面2.查找什么写的3.找OEP有下断到GetVersion或者找subesp,0x58这里要到401000那去搜索不然找不到有可能同时先要程序运行起来直接搜索没有定位到0x401000也没有运行进来就有了点下发现还是条花指令同时不像OEP(因为它偷取了OEP)nop一条就是oep通过对比没有偷取OEP的程序发现少了不少指令但只要还原俩条就可以了(一
查壳molebox载入od单步发现esp定律就能搞定找到OEP有可能是vc与易语言(外挂)因为目前看没有加密直接dump修复iat时发现不能运行那很定是iat修复错了只有一种可能IAT被加密果然有的被加密这就有意思了一般大部分是有些是无效的就直接去掉正好入坑了重新开始先下iat硬件写入断点有针对性的下下断可以多下几个第一次断下有点不像发现很多直接f9让他过去又来了个还是不像同时有很多继续走又断下猜
地址:https://bbs.pediy.com/thread-225617.htm总结1.有反调试去掉反调试2.找OEP一般有esp定律,下断点法(如下断到BPGetVersion运行到返回再f7就返回上一层就是OEP)等3.下IAT写入断点(有可能要几次才到真正的写入IAT指令)。4.在写入断点处下软件断点(防止跑飞)5.下断成功上下看下指令大部都是花指令像下图在上一条指令要nop一条指令才能
1。加密一定要自己申请空间VARvOldOEPVARvAllocAddrVARvWriteIATAddrVARvGetAPIAddrVARvTmpMOVvOldOEP,0047148BMOVvAllocAddr,0047A37FMOVvGetAPIAddr,14E0MOVvWriteIATAddr,0897//2.对申请空间的地方下断,取出基址//3.设置其他的断点,让程序跑起来,对每一个断点进行
1.找载入od发现esp定律就可以搞定找OEP看到了一个函数但od没有注释可能加密先去函数地址下断函数出来了说明没错到这里那就去IAT下硬件写入断点重新运行程序下断成功这里这是IAT填充了这里先讲下加密壳原理1。先遍历要加密的程序的IAT然后把一个个函数的名称计算下hash把算出来的hash保存起来2。加密IAT3.运行程序时没有壳的情况下一般是链接器帮我们填充IAT有壳程序就是壳来做了4.因此一
1.查看版本2.运行程序看看目的是点亮确定按扭思路很多(直改exe文件字符串搜索等)这里用api下断分析可以看出是vc2013那就下点击断点思路找特征码(与版本相关)2013按扭事件特征码VS2013Debug静态编译CALLDWORDPTRSS:[EBP-0x8]VS2013Release版静态编译CALLDWORDPTRSS:[EBP+0x14]直接载入od搜特征码先运行程序全部下断然后一个个
1.运行程序出错2.用ida分析找到入口3.分析看到scanf_s应该就是有个密码长度相关call进去看看发现有STL数据结构记下地址用od载入同时断到外call那看到size猜它为初始化函数进去高度怀疑为一个数据结构有几种可能树或链表链表更像跟随下肯定是一个结点继续跟随分析上下跟随一个果真是个链表通过分析ebp-0x200019FD7C0284B0F0第一个0284B0F0005442C4.00
先看看特点有:估计注册码是通过不同电脑与用户名自动生成的注意关键字符串这里就从字符串下手查壳(有壳)载入od断下来了由于有壳所以先f9运行运行起来了就不管你怎么加密最后都要解密加载定位到代码段(ctrl+g)输入0x401000搜索字符串(一般用智能搜索)搜索未购买(怎么就搜那个我搜了好多这个管用)点击进入代码段往上看看到了一些重要信息加载注册表(因为是启动时检查密码用户名很定保存在注册表里)下断
在c++中string是一个类瑞现在用od分析它
大家都知道scanf()遇到空格后就会结束原因是底层函数是这么实现的那现在从底层调用不调用scanf()源码:#include<windows.h>#include<iostream>usingnamespacestd;_ACRTIMP_ALTFILE*__cdecl__acrt_iob_func(unsigned);#ifdef__cplusplusextern"C"#e
1.先运行下正常2.打密码密码错误3.用OD调试发现报异常说明做了反调试(OD不要用插件不然他会反反调试看不到)4.(这里要用到win7了因为win10报异常不知道在哪里)win10效果win7效果可以看出异常地址在哪里5.知道异常地址在哪了用ida静态分析(ida就好办多了这里直接用mac版7.0)
在开始那右键打开运行输入shell:sendto
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号