自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

_KaQqi的博客

实践是检验真理的唯一标准!

  • 博客(41)
  • 收藏
  • 关注

原创 一个CrackMe的分析

0x00 初探 程序有ASLR,不方便分析,使用FFI去掉。 OD载入后,发现程序退出。 给ExitProcess下断点,然后重新载入程序,成功断下。修改代码为retn 4即可。 此时即可使用OD调试。运行后,[确认]按钮是禁止状态。 0x01 寻找编辑框的输入事件 用彗星探测一下编辑框的句柄 给GetWindowTextW下条件断点。 输入一个字节即可断下。

2017-12-10 18:52:09 804 1

原创 2017HCTF第一题WP

0x0 初探 先用PEID查看一下CM的信息 从图中可以发现,程序使用Debug的编译方式编译且有一个TLS回调函数。 因为程序有ASLR,不方便分析,因此我用FFI去掉后再继续分析。 1x0 分析TLS回调函数 OD载入,断在TLS入口处。 一共有四个函数,其中前两个我们需要关注一下。因为这两个函数是反调试的函数。 1x1 分析函数 0041141A CM先创建一个

2017-11-12 19:33:12 615

原创 SWPU RE类第二题WP

这道题目满分刚好是100分。。。 程序有ASLR,用FFI去掉方便分析。 去掉以后,OD载入,F9运行,给GetWindowTextA下端点,然后输入一个注册码就可以断下。 F8单步回到004026A6处后,CM判断注册码的字节数,如果不是16个字节就返回。 删掉之前设置的所有断点,在004026BE处下一个断点。这样输入16个字节就可以断下了。 然后CM重新计算了注册码的长度

2017-11-02 22:03:19 338

原创 160个CrackMe之41

因为这是我做的第一个PatchMe,所以哪里不对还请大佬们指出来。 0x0 初探 首先,程序有一个rules.txt,内容如下: 下载以后,发现CM中有一个rules.txt,内容如下: 只看得懂一部分,大致是说,给Exit菜单添加代码,单击的时候弹出一个信息框,内容是”Do you fickbirne really want to quit?”,如果点[是]就退出,否则不退出。打开CM看一

2017-10-21 23:54:25 437

原创 160个CrackMe之51

我不是大神,所以文章哪里写的不对的地方还请各位大佬指出。 直接来到算法部分0x0040104B处,分析发现算法很简短,主要分成了两部分。 第一部分:0040105C A1 21214000 mov eax, dword ptr [0x402121] ; 注册码的前四个字节00401061 B9 02000000 mov ecx, 0x2

2017-10-15 12:59:13 291

原创 160个CrackMe之123

我并不是大神,所以哪里写的不对,还请各位大佬们指出来。0x0 分析算法 OD载入,搜索字符串,发现关键函数0x004013C0,给这个函数下断点,然后随便输入一串注册码,程序成功断下。首先,程序将字符串”ABCDEFGHIJKLMNOPQRSTUVWXYZ”拷贝到一个新的地址处00401421 B9 06000000 mov ecx, 0x600401426 BE 4

2017-10-01 18:03:00 790

原创 160个CrackMe之91

个人感觉这个CM是我玩过的最另类的一个了,如果有什么不对的地方还请各位大佬更正。 0x0 寻找按钮事件 OD载入,发现程序打开crueme.dat文件,如果打开失败则提示错误然后结束程序。00401043 6A 00 push 0x000401045 68 80000000 push 0x800040104A 6A 03

2017-10-01 13:19:05 493

原创 一个ReverseMe的算法分析

这个ReverseMe是我一年前写的,不过现在源代码丢了而且怎么写的也忘了。正好昨天逛一个论坛的时候看到了那个CM,就顺便下载玩了玩(也算是重温了一下),于是就有了这篇文章。 因为篇幅有限 我就写写关键的地方。 0x0 寻找算法地址 直接来到main函数(0x004019B2)处。 程序首先获取ntdll!ZwContinue函数的地址,然后保存到0x00417F7C处。004019BE

2017-09-26 22:40:24 442

原创 160个CrackMe之11

我不是大神,只是一个菜鸟,所以文章中有哪里不对的地方还请各位大佬们指出。 0x0 寻找验证函数 仔细看一下CM 发现没有任何验证的地方,于是我猜测应该有个时钟或者线程在一直验证注册码是否正确。 直接给SetWindowTextA下断点,然后点击按钮1即可断下。 返回到0x004035A1处,向上滚动滚轮找到函数头0x004034E0处,下断点然后F9 再点击刚才的按钮即可断下。 这段

2017-09-16 20:25:30 554

原创 写了一个添加节感染Intel X86 PE文件的程序(Virus)

为了加深一下PE文件的理解 就随手写了一个其实ASM才是病毒的王道23333不需要重定位 嘿嘿~这个程序会感染当前目录以及所有子目录中的所有的Intel x86类型的PE文件写的不是很好 大牛勿喷..686p.model flat,stdcalloption casemap:noneinclude InfectPe.inc.codestart: assume

2017-02-08 13:03:43 571

转载 RDMSR--读MSR

RDMSR--读MSR RDMSR将64位由ECX寄存器指定的MSR(model specific register,模式指定寄存器)的内容读出至寄存器EDX:EAX中(在支持intel64架构的处理器中RCX的高32位忽略)。MSR的高32位内容存放在EDX寄存器中,MSR的低32位内容存放在EAX寄存器中(在支持intel64架构的处理器中RDX和RAX的高32位忽略)。如果M

2016-07-30 14:58:09 4870

转载 WRMSR--写MSR

WRMSR--写MSR WRMSR将寄存器EDX:EAX的内容写到64位由ECX寄存器指定的MSR(model specific register,模式指定寄存器)中(在支持intel64架构的处理器中RCX的高32位忽略。)。EDX寄存器内容拷贝至选定的MSR的高32位,EAX内容拷贝至选定的MSR的低32位(在支持intel64架构的处理器中RDX和RAX的高32位忽略)。MS

2016-07-30 14:57:42 688

转载 SYSEXIT——快速系统调用的快速返回

SYSEXIT——快速系统调用的快速返回 SYSEXIT用来快速调用返回至3层的用户代码。SYSEXIT是SYSENTER的同伴指令。该指令经过了优化,它可以使将由操作系统或执行程序(运行在0层)至用户代码(运行在3层)的返回发挥最大的性能。该指令只能在0层的权限执行。 在调用SYSEXIT指令前,软件必须通过MSR寄存器和通用寄存器,指定3层的代码段和代码指针,3层的堆栈段和堆栈

2016-07-30 14:57:18 494

转载 SYSENTER——快速系统调用

SYSENTER——快速系统调用 SYSENTER用来快速调用一个0层的系统过程。SYSENTER是SYSEXIT的同伴指令。该指令经过了优化,它可以使将由用户代码(运行在3层)向操作系统或执行程序(运行在0层)发起的系统调用发挥最大的性能。 在调用SYSENTER指令前,软件必须通过下面的MSR寄存器,指定0层的代码段和代码指针,0层的堆栈段和堆栈指针:1.       IA

2016-07-30 14:56:28 319

原创 做了一个Dump exe文件的工具

为了加深对PE文件的理解,以及和进程有关的WIN32 API的应用,就做出了这么一个东西。DUMP的话只需要DUMP出DOS头 + PE头 + 区块即可。#include "stdafx.h"typedef struct { WORD e_magic; char Data[23 + sizeof(DWORD) * 3]; LONG e_lfanew;}Dos,*pDos;int

2016-07-30 14:54:26 4145

原创 sysenter HOOK反OD调试

sysenter指令:SYSENTER用来快速调用一个0层的系统过程。SYSENTER是SYSEXIT的同伴指令。该指令经过了优化,它可以使将由用户代码(运行在3层)向操作系统或执行程序(运行在0层)发起的系统调用发挥最大的性能。 在调用SYSENTER指令前,软件必须通过下面的MSR寄存器,指定0层的代码段和代码指针,0层的堆栈段和堆栈指针:1.       IA32_SYS

2016-05-12 20:01:08 2134

原创 写一个虚拟机的模型

代码虚拟化:我认为代码虚拟化是将native转换为字节码,但是字节码是不能被机器识别的,所以就需要有对应的解释器来解释他。因为字节码是我们定义的,所以一般的工具不能正确的识别它。就因为这样,虚拟机保护的代码比较难以识别破解,但是解释器一般情况下都是native 因为这样才能使解释器运行起来并解释字节码。

2016-02-27 17:26:18 1446

原创 使用retn指令调用API

PS:我也是菜鸟,有什么不对的地方欢迎大牛拍砖。使用Retn指令调用API的好处就是:在OD中对你用Retn调用的API下断点时,不会显示API调用地址。

2016-02-19 11:16:52 1761

原创 简单感染PE文件

这个感染方式和win9x时代的CIH病毒感染方式很像。。。这个程序的感染标识放在了DOS头中。。。因为DOS头只有MZ和最后一个指向PE头的指针很重要,改了就完蛋了。。。别的几乎用不到所以修改DOS头的话,只要不修改首尾字段,几乎不会影响程序的运行。

2016-02-16 18:05:02 2751 1

原创 C语言实现区块加密

哈 学了几节PE格式,写了一个这玩意(还有一个PE信息查看的 没写完呢)需要的基础知识:只需要一点点的PE结构基础就可以了参考小甲鱼老师的PE结构详解(听懂其中前三节左右)

2016-02-03 18:25:39 789

原创 C/C++中多字符集转宽字符集

#include int main(void){ LPSTR text="Unicode 测试"; wchar_t textW[256]; MultiByteToWideChar(CP_ACP,0,text,-1,textW,strlen(text)); MessageBoxW(NULL,textW,NULL,MB_OK); return 0;}

2016-01-24 14:35:08 791

原创 DLL劫持技术

DLL劫持技术不想再说了,具体的可以百度。。。。先简单的说一句。。。运行一个PE文件,WINDOWS会首先在当前目录下寻找要用的DLL,如果找不到就上其他地方找,一直到系统目录。。。然后想干嘛就干嘛了。。。首先得伪造,别告诉我随便找个PE文件然后改一下名字就是伪造了。。。。怎么伪造呢?当然是伪造导入表。

2016-01-18 20:03:29 4562 3

原创 C语言模拟按键

其实 keybd_event 这个API的模拟按键需要按键码,如果用户输入一个字符,怎么用这个API打印出来呢?

2016-01-17 12:48:42 3217

原创 C语言写的工具箱

新手写的,大牛勿喷。。。以后会一直更新

2015-12-31 19:54:30 1479

原创 C语言简易的硬盘操作器

用C语言写的小软件 大神勿喷

2015-12-26 14:19:37 1685

原创 C语言简单比较图片

我觉得,比较图片直接比较图片的二进制码就可以了。因为如果二进制码改变了,这个图片一定会改变的。不过改变的是什么我们就不用管了。比如画质什么的。 也可以用像素比较。不过。。。。。。。唉,一直没思路

2015-12-21 19:40:02 2544

原创 C/C++用户模式下备份并改写MBR

原理已经说过了,不想再说了。其实用API备份修改硬盘那么复杂。。。我只是想说:库函数也可以打开硬盘。。。。。

2015-12-19 13:40:40 2054

原创 C语言隐藏控制台窗口

没有摘要

2015-12-12 21:31:49 5577

原创 C/C++用户模式下改写硬盘主引导记录(MBR)

CPU一共有四种权限级别:ring0 ring1 ring2 ring3Windows只是用了ring0和ring3我们在使用电脑时,一般在ring3模式下工作。在ring3模式下,我们无法使用CPU特权指令in和out。对系统所属的数据,地址空间以及硬件也是有严格的限制的。

2015-12-12 16:14:11 7071 6

原创 C/C++检测进程是否被调试

程序使用API SetUnhandledExceptionFilter 来注册一个未处理异常的函数1,如果进程没有被调试,那么会触发一个未处理异常,导致操作系统会将控制权交给函数1。如果进程被调试,则调试器会捕捉这个未处理异常。这样,我们的函数1也就不会被执行了。这里在触发异常时,则是跳回原来的代码来执行,而不会退出程序。UnhandledExceptionFilter 这个函数修改了EI

2015-12-06 17:51:07 2718 2

原创 C语言求出给出数据的素数的和以及素数的个数

这个只是对动态数组的应用

2015-12-05 09:25:27 1918

原创 C语言实现动态数组

我们在写一些程序时,有很多地方我们是无法知道数组的大小,可还要用数组。。这样就很让人郁闷。。

2015-12-04 23:11:47 681

原创 MFC清除CMOS密码

这个只是根据昨天的清除CMOS密码的驱动程序对应的一个SDK

2015-11-28 11:08:52 512

原创 汇编清除CMOS密码

代码很精简的,不要不相信!

2015-11-27 19:48:02 839

原创 C语言清空文件内容

C语言中清空文件的方法很简单。只要以 可写 的方式打开文件,就能将这个文件清空

2015-11-22 20:58:47 28620 5

原创 C语言加密数据(xor加密)

有的时候,我们需要将数据加密,来保护自己的数据

2015-11-22 18:00:34 3132

原创 C语言读取文件的内容

有的时候,我们写程序时,需要读取文件的内容。

2015-11-21 16:41:01 2575

原创 C语言设置剪辑版文本

很多时候,我们都需要设置剪辑版中的文本。比如写一个刷屏器什么的。

2015-11-21 14:06:23 1132

原创 C语言头文件应用 --- 写一个CMD

我记得学C语言没几天 刚接触到一个头文件的时候,我就心血来潮,写了一个CMD 其实,实现起来还是很简单的

2015-11-20 22:38:18 611

原创 C语言写修改软件标题的补丁

这个是我使用API写出来的小软件 不支持带有空格的标题

2015-11-20 22:30:00 1871

空空如也

空空如也

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

TA关注的人

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