
二进制
文章平均质量分 73
二进制
Istaroth
这个作者很懒,什么都没留下…
展开
-
spoof_call的分析与改进
UnKnoWnCheaTs分享过一个x64伪造函数调用栈/返回地址的文章针对其原理做个简要分析,修复部分使用问题,以及重构了个简单版本的代码(增加少量代码执行量简化代码逻辑)原创 2022-08-14 16:04:52 · 1832 阅读 · 3 评论 -
LLVM PASS--虚函数保护
虚函数实现分析CPP实现:#include <iostream>class Test{public: Test() noexcept { printf("Test::Test()\n"); } virtual ~Test() { printf("Virtual ~Test()\n"); } virtual void prointer() = 0; virtual void pointf原创 2022-02-27 22:12:28 · 4741 阅读 · 0 评论 -
use after free & double free利用
在fastbin下的use after free & double free利用double free + fastbin attack = 任意地址写在malloc()时,当用户所要求内存大小在 fastbin 的大小范围时,malloc()优先从fastbin中拿出chunk规则:释放堆插入到head后的第一个chunk;分配堆释放head后的第一个chunk初始状态[head]—>[chunk1:next,…]—>[chunk2:null]此时申请了两个堆:[hea原创 2022-02-24 19:21:50 · 425 阅读 · 0 评论 -
LLVM 13.1 new Pass插件形式 [for win]
LLVM 13.1 new Pass插件形式 [for win]4大关键点:LLVM 13.1版本(当前最新版)windows平台上的pass demonew pass形式(非legacy)clang 动态插件形式(pass插件与llvm本体编译分离)背景:当前外部资料均为老版本LLVM + legacy模式的pass,和当前llvm版本脱节,新模式下没资料就自己研究了下,具体新旧LLVM版本对pass的编写有啥影响,具体原因是啥,怎么做能兼容旧版本见我的上一篇文章(设计新旧异同分析的原理原创 2022-02-21 00:46:51 · 5294 阅读 · 0 评论 -
windows上的LLVM pass瞎折腾记录
windows上的LLVM pass瞎折腾记录想着了解下LLVM的代码和编译过程,就从写LLVM pass入手吧,结果环境搞了半天,做个踩坑记录…文章最后有逐步骤的操作记录,Tips内记录关键点和思路Tips:首先不要在win上折腾llvm pass(本篇结束…),官方不支持得改代码,但是折腾一半实在是杠上了,所以还是硬着头皮搞了LLVM-PROJECT是各种工程的集合,写pass的话关注c+/c++前端clang,IR优化器opt这两个工程就好LLVM不同版本间插件很大,很多网络上的资料隔一原创 2022-02-15 01:06:10 · 1185 阅读 · 0 评论 -
IAT-Hook 劫持进程Api调用
✪ω✪ 鹅厂面试的时候回答劫持API的各种Hook方式的时候,IAT-Hook应该算是最简单的一个。比IAT-Hook更难的是R3的5字节Hook,然后是热补丁Hook,SSDT-Hook….. 5字节Hook在前两篇进程隐藏中用过了,7字节主要是对API的要求比较高,这篇就更新IAT-Hook的实现代码,后续再更新复制原始API部分代码的热补丁Hook和SSDT-HookT_T 本来昨...原创 2018-05-28 16:40:45 · 2724 阅读 · 1 评论 -
3环下进程隐藏------持续隐藏防新开
因为上篇进程隐藏存在这一些缺陷,比如只能对当前打开的任务管理器隐藏,关闭任务管理器重开就无法隐藏了,原因很简单,因为重开的任务管理器并没有被我们Hook,自然无效Notes: 1.新版进程隐藏致力于解决这个问题 HideProc负责将Dll注入explorer.exe 和已经运行的 taskmgr.exe DLL加入自动识别模块,如果自身被注入到taskmgr.exe则Hook ZwQu...原创 2018-05-23 18:29:45 · 1202 阅读 · 0 评论 -
3环下进程隐藏
分析&注意事项 1.隐藏指定进程,即程序调用CreateToolhelp32Snapshot这个函数得到的进程链表中不能有我们需要隐藏的进程 2.除了CreateToolhelp32Snapshot可以遍历进程外还有EnumProcess也可以。逆向显示,这两个API都是调用一个更加底层的函数从内核层取得进程结构链表的,叫ZwQuerySystemInformation,属于ntdll...原创 2018-05-22 22:57:21 · 766 阅读 · 0 评论 -
Windbg Preview调试分析CreateToolhelp32Snapshot
进程隐藏的时候并没有对CreateToolhelp32Snapshot进行Hook,而是Hook了ZwQuerySystemInformation,写了一个调用CreateToolhelp32Snapshot显示进程的小程序,分析一下,顺便了解下Windbg Preview怎么用.1. 应用商店搜索Windbg Preview下载,界面比原来的版本好看很多,而且也有更多地功能区,各种方便,推...原创 2018-06-03 18:18:26 · 3298 阅读 · 1 评论 -
3环下的进程隐藏----64位windows 10
搞了两天还没搞定,记录下这两天分析的结论和疑惑吧。。。。。 1. MSDN说ZwQuerySystemInformation这个API在windows 8以上取消了,x86的GetProcAddress是可以找到ZwQuerySystemInformation这个API的,x64的GetProcAddress找到了一个名字不一样的API叫RtlGetNativeSystemInformatio...原创 2018-05-27 15:24:01 · 2276 阅读 · 0 评论 -
修改PE文件实现静态DLL注入
向PE文件注入DLL一般来说分为两种,一种是动态的,就是在程序运行中注入。还有一种是静态的,也就是修改PE文件达到DLL注入的效果。直接上实验步骤实验(经过处理的NotePad,输入表下面有大量0000空余,无需进行移位操作): 1.LoadPE查看输入表 可以看到输入表的RVA是00007604,转化成文件偏移是6A04(用LoadPE中的位置计算器计算),c32找到6A04处 2...原创 2018-05-07 19:39:00 · 5529 阅读 · 0 评论 -
远程代码注入
TIPS 1. 之前写进程隐藏的时候写了个dll注入工具,这个工具会想目标进程写入dll名称,然后利用loadlirary加载dll。如何让那个程序调用loadlirary的呢?是用了CreateRemoteThread这个函数,翻译过来就是创建远程线程,为什么微软要提供一个这样的函数呢?其实并不是微软特地提供的给我们注入的API,这个API的实际作用其实是创建远程线程,创建的线程原型是DWO...原创 2018-05-29 22:16:14 · 1040 阅读 · 0 评论 -
逆向分析从x86到x64Tips
Tips1 在之前写的一篇文章 3环下的进程隐藏—-64位windows 10 中的提出的一个疑问: 本来以为x64下的地址为8字节,所以jmp 的address需要 -9 的,结果调试发现还是和x86一样 -5 就行了…..这里就是 x86—->x64 逆向分析过程中需要特别注意的一点,jmp指令和call指令的变化 虽然在OD下有很多跳转指令jmp xxxxx,但是去仔...原创 2018-05-31 20:19:16 · 924 阅读 · 0 评论 -
破解WinRAR去广告弹窗
WinRAR每次启动都会弹出广告,分析后发现去广告挺容易的…..仅作技术交流使用,切勿用于破解传播哦~1.目标:32位WinRAR去广告弹窗,单文件ko2.OD载入找窗口相关的API调用发现有CreateWindowEx的调用,全部下断 3.F9运行记录哪个调用负责创建广告弹窗. 记录发现窗口类名为SysListView32的call调用完后主窗口出现 窗口类名为RarHtmlC...原创 2018-06-24 01:27:33 · 1040 阅读 · 0 评论 -
X64下进程隐藏实现与Debug
之前写过几篇进程隐藏的技术贴,但是在X64下代码没有成功,昨晚深入调试了一会儿发现了问题所在,这里详细探讨下先贴上完整的Hide.dll的cpp代码:#include "Hide.h"#define SystemProcessInformation 5#define STATUS_SUCCESS (0x00000000L)#define STATUS_...原创 2018-06-26 15:31:06 · 3499 阅读 · 2 评论 -
LoadLibrary----windows10/7/xp
之前写的dll注入工具在windows 10下始终没法使用,跟踪调试后发现问题不在NtCreateThreadEx这里而在LoadLibraryW函数的使用上…………….. LoadLibraryW函数想加载D盘下的hack.dll时 如果写成LoadLibraryW(L"d:hack.dll")这样在xp下测试不会出现问题,但是在windows 10 下会出现找不到dll的错误规...原创 2018-07-03 18:25:49 · 723 阅读 · 0 评论 -
利用未开启SafeSEH的模块绕过SafeSEH机制的细节问题
SafeSEH机制及绕过方式简介1.SafeSEH会在程序编译的时候保存一份程序所使用的所有异常处理函数的地址如列表table[0]:0x40000100 handler1table[1]:0x40000200 handler2table[2]:0x40000300 handler32.且在进行异常处理的时候会检测handle地址所在的PE文件的异常处理函数的地址表中因为只有开启了S...原创 2019-03-12 00:19:28 · 490 阅读 · 1 评论 -
DLL加载问题
今天打算研究下白利用的时候出各种问题,复习下dll加载。1.普通dll文件int add(int a,int b){return a+b;}查看输出表为空2._declspec申明_declspec(dllexport) int add(int a,int b){ return a+b;}导出函数名为?add@@YAHHH@Z,产生一个lib文件,...原创 2017-12-08 00:54:15 · 424 阅读 · 0 评论 -
CyxvcProtect加壳程序研究与改进
花了2天时间读了一份完整的PE文件加壳源码,源码比较基础,没有使用代码偷取技术也没有使用反调试的应用。作为学习加壳程序编写的典型项目非常好用,原作者编码习惯非常棒,条例十分清晰,非常适合初学者学习。所以我在一边学习他的编写思路的情况下一边学习加壳技术,后续学习到的新技术都会在这个代码的基础上加以改进。 这篇博文写之前已经完成了一些较为简单的改进。 Github项目地址:CyxvcP...原创 2018-05-19 17:45:30 · 972 阅读 · 0 评论 -
还原0day----覆盖虚函数突破GS
接上一篇,与vc++6.0(并没有GS安全机制)不一样的是,vs2008启用GS后的实例内存布局有些不一样,结合0day代码探究下突破GS的具体细节 C++代码:vs2008 release 优化禁用#include "stdafx.h"#include "string.h"class GSVirtual {public : void gsv(char * src) ...原创 2018-05-12 22:23:05 · 499 阅读 · 0 评论 -
堆溢出&异常处理&探究虚函数&多态的实质
前两天跟着《0day》堆溢出部分研究了一下一直不太清楚的堆溢出原理,不同于栈溢出,堆溢出的难度确实很大,但是理解了之后其实也不难,栈溢出后可以通过返回地址的修改控制EIP寄存器从而得到程序的控制权。但是堆区写入得都是纯数据啊,怎么可能能控制EIP寄存器呢?堆溢出是怎么获得程序控制权的呢,这是我一直困惑的一点。 看完之后恍然大悟啊,如果说栈溢出是主动控制EIP的话,堆溢出就是被动控制EIP,堆区写...原创 2018-05-12 13:19:45 · 399 阅读 · 0 评论 -
windbg实验2
沙老师的实验2 1.配置双机调试 2.系统断下,命令g执行开机 3.打开记事本,停止,进入notepad.exe进程空间 4..process xxx仅切换了KPROCESS结构,并没有切换进程上下文,因此页目录表与预期不同,这时需要用入侵式切换:.process /i /p xxx 5..reload重载符号表 6. 给kernel32!CreatFileW下断点,u反汇编查看下 ...原创 2017-10-23 21:17:24 · 487 阅读 · 3 评论 -
dll注入技术
好久没更新博客了,最近在忙实验周的事情,空下来的时间再看逆向工程核心原理,上次看的时候后半部分涉及到windows核心编程那里就没有进行下去了,当时还不太懂windows编程,最近重新借来看了下越看越有意思 DLL注入技术看完了,总结一下dll注入技术实现方式有三个(或者更多?)。 1.使用windows消息机制实现dll注入,使用SetWindowsHookEx这个api,使用这个api给指...原创 2017-11-13 18:54:41 · 645 阅读 · 0 评论 -
API钩取技术
DLL注入说完了下一章介绍了API钩取技术,这个技术运用范围更加广泛基本木马病毒都会用到这个。整理下这3天看的api hook相关方式。1.调试器法:使用DebugActiveProcess函数以调试模式附加到相关进程,获取进程控制权。等待调试者发生时间,并在发生相关函数调用事件时调用处理函数。给api开始地址写上0xcc(int 3)断点,断下之后获取进程上下文,获取寄存器的值,在内存中跟随...原创 2017-11-13 20:11:44 · 1522 阅读 · 0 评论 -
南邮ctf逆向最后一题
你大概需要一个优秀的mac //虽然是osx下的程序,但并不一定真的要有mac….正好我也没mac,只能拖到ida里面了,发现还真可以….ida有点厉害找到right wrong字符串,观察下主框架然后果断f5看下伪代码 可以看出来就是简单的输入长度为56的字符串然后经过func1,xfun1,xfun2,xfun3,xfun4,xfun5这几个函数加密然后check函数比较 ...原创 2017-11-13 23:47:35 · 1253 阅读 · 0 评论 -
白+黑(白利用)漏洞加载木马技术解析
刚上高中那个暑假?记不太清了,好像就是那个时候开始的白加黑木马爆发,因为利用率几乎不可能解决的 逻辑缺陷,所以杀软的防御基本永远没法从根本上去拦截。百度也没什么这个漏洞的基础解析,下面通过编 程实现一个模拟这个漏洞的东西实现白加黑技术初步解析。1.白利用漏洞基本原理:利用了大公司代码的编写缺陷,比如某宝的某个exe程序,自带数字签名,他运行的时候会动态加载其目录下的dll文件(l...原创 2017-12-08 20:42:30 · 5422 阅读 · 2 评论 -
病毒逆向分析
收到一个病毒样本,被告知高危,需要进行逆向分析。分析完成之后写篇你想分析报告,第一次写病毒逆向报告,还不太会排版,见谅。 首先,先拿到病毒传到世界杀毒网上先看看检出率,不出意料,检出率还挺高(60 / 66),毕竟不算是特别新的病毒了, 但是在高检出率的同时,virustotal和腾讯的哈勃分析系统都没能检测到什么关键的病毒行为(腾讯只检出了打开事件,virustotal只检出Isdebug...原创 2018-03-18 16:32:55 · 4178 阅读 · 1 评论 -
病毒反调试跟踪
跟踪一个反调试巨多的病毒样本1.调用 QueryPerformanceCounter反调试,这个API调用了封装ZwQueryPerformanceCounter系统调用的ntdll!NtQueryPerformanceCounter004060FA |. 3345 FC xor eax,[local.1]004060FD |. 8945 FC ...原创 2018-03-21 19:38:10 · 3229 阅读 · 0 评论 -
com感染病毒分析
先附上com病毒的源码 virus.asmCSEG SEGMENT ASSUME CS:CSEG,DS:CSEG,SS:CSEG main PROC NEAR mainstart: CALL vstartvstart: POP SIMOV BP,SIPUSH SI MOV AH,9 ADD SI,OFFSET message-OFFSET vstartMOV DX,S...原创 2018-04-02 16:51:17 · 2338 阅读 · 0 评论 -
windbg实验1
沙老师的作业,,, 1.启动本地内核调试模式:file—kernel dbg—-local 2.查看加载的驱动模块—–lm 3.显示调试器当前运行进程信息—-!process 4.dd xxx 进xxx看内容 5.dds xxx 打印内存地址上的二进制值同时自动搜索二进制值对应的符号 6.ssdt表是包含R3和R0层的api函...原创 2017-10-14 16:25:02 · 371 阅读 · 0 评论 -
PE中的import table/IAT 分析
PE中的import table/IAT 分析本文将通过一个实例说明PE结构中的import table及import address table(IAT). 在data directory中有两项:IMAGE_DIRECTORY_ENTRY_IMPORT(1)和IMAGE_DIRECTORY_ENTRY_IAT(12),IMAGE_DIRECTORY_ENTRY_IMPORT指向了该PE文件中...转载 2017-09-25 12:16:29 · 790 阅读 · 0 评论 -
虚拟地址、线性地址和物理地址的转换
虚拟地址、线性地址和物理地址的转换一、 虚拟地址 即逻辑地址,是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻...转载 2017-09-17 15:04:56 · 1071 阅读 · 0 评论 -
逆向CrackMe-01写注册机
之前一直都对逆向工程蛮感兴趣,去年系统学习过一段时间,下载了160个crackme程序包开始逆向实践。首先对Acid burn.exe进行分析 因为网上已经有对这个程序逆向的详细帖子这里我只写概要以及逆向后发现的加密算法以及我写的注册机源码算法分析:得到名字的第一个字符ascii转int类型。*41*2得到密码中间密码为 “CW-密码-CRACKED”注册机源码:...原创 2017-07-31 16:49:37 · 1035 阅读 · 0 评论 -
逆向CrackMe-02写注册机
之前一直都对逆向工程蛮感兴趣,去年系统学习过一段时间,下载了160个crackme程序包开始逆向实践。首先对Afkayas.1.Exe进行分析 因为网上已经有对这个程序逆向的详细帖子这里我只写概要以及逆向后发现的加密算法以及我写的注册机源码算法分析:取name第一个字符转10进制 + 字数*97531这个数就是密码AFA-XXXXXX注册机源码:#incl...原创 2017-07-31 16:52:47 · 849 阅读 · 0 评论 -
逆向CrackMe-03写注册机
之前一直都对逆向工程蛮感兴趣,去年系统学习过一段时间,下载了160个crackme程序包开始逆向实践。首先对AfKayAs.2.Exe进行分析 因为网上已经有对这个程序逆向的详细帖子这里我只写概要以及逆向后发现的加密算法以及我写的注册机源码算法分析:名字字数*88888+首字母数值+2*3-2+15注册机源码:#include <iostre...原创 2017-07-31 16:54:37 · 718 阅读 · 0 评论 -
用bochs调试mbr-初步调试
bochs调试过程(0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b ; ea5be000f0<bochs:1> b 0x7c00<bochs:2> c(0) Breakpoint 1, 0x0000000000007c00 in ?? ()Next at t=1...原创 2017-09-10 21:01:46 · 1063 阅读 · 0 评论 -
PE头结构学习-----PE头移位
刚开始学pe结构的时候,是为了搞XXXXX的,那时瑞星和江民还有希望,那时卡饭论坛还常驻各个杀毒软件厂商的工程师,想想还有些怀念,初中基本啥也不懂,就上论坛看别人是怎么搞的,有一次看到一个免杀技术叫pe头移位,后来这个技术也用了蛮久。刚好现在上了操作系统这门课,作业就是要研究下pe结构,所以就以pe头移位为目标,看看其中的原理到底是啥。PE头是一个 IMAGE_NT_HEADERS的结构。...原创 2017-09-25 00:06:45 · 1647 阅读 · 0 评论 -
在Windows上安装Bochs虚拟机运行XP
1.下载bochs 2.4版本 2.打开bochs目录下的dlxlinux文件夹 3.在这个文件夹下放入镜像文件(xxx.img) (百度bochs xp镜像下载) 4.配置bochsrc.bxrc(根据自己命名的img文件替换下面的代码)# how much memory the emulated machine will havemegs: 512# #号表示注释 类似...原创 2017-09-10 16:54:35 · 2265 阅读 · 0 评论 -
用bochs调试mbr--开始调试啦
上一篇写了安装系统,这篇就开始正式调试啦1.上节写了个run.bat是通过给bochs.exe主程序传参实现的系统开启,调试也是一个道理 在run.bat目录下写一个debug.bat 使用相同参数调用即可 2.下面是调试过程Next at t=0(0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b ...原创 2017-09-10 19:23:26 · 645 阅读 · 1 评论 -
用bochs调试mbr-深入mbr调试分析
上一篇调试mbr的时候有一个call,如果这个call跟进去的话在一个跳转之后内存地址明显不是mbr代码段了,所以上篇调试中并未对这个call深入分析。 问题如图! 在jmp之后的代码与ida完全不一样了。问题出在int 13h这个地方,int 13h在这里是中断,如果单步步入的话就会进入中断处理程序,所以int中断这里需要单步步过这里不是jb跳转啊,int指令是不能s单步...原创 2017-09-12 22:32:18 · 1595 阅读 · 0 评论