- 博客(14)
- 收藏
- 关注
原创 003-Cruehead-Crackme-3分析
使用x32dbg分析,进入程序。发现调用了CreateFile函数,然后将返回值与-1对比来决定是否跳转。从参数可以得到一个文件名“CRACKME3.KEY”。根据CreateFile函数的定义发现:如果已有该文件则返回-1,反之返回句柄。说明这个函数在此是判断是否有这样一个KEY文件。接着往后看发现一个readfile函数,猜测该函数是要读取key文件中的数据。从参数可以发现,数据被保存到了0x402008地址处,长度被保存到0x4021A0处。如果不为18则要跳转。那估计key的长度要为18,或者也可
2022-06-15 21:31:30
449
原创 win32学习笔记(八)
使用Win32API制作了一个时钟程序代码如下:// win32appdemo.cpp : Defines the entry point for the application.//#include "stdafx.h"#include <string>#include <math.h>#define IDT_CLOCK 1static int s_nPreHour;static int s_nPreMinute;static int s_nPreSecond
2022-04-17 15:21:09
359
原创 Unicode编码与C语言宽字符
文章目录1.ASCII、ANSI、Unicode都是什么?2.为什么需要宽字符?3.C语言如何处理宽字符?4.Windows中的字符串函数1.ASCII、ANSI、Unicode都是什么?ASCII:American Standard Code for Information Interchange即美国信息交换标准代码,是一种非常常用的编码方式。标准ASCII码使用7位二进制数的组合来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符,一共128个。标准ASC
2022-04-16 21:19:20
2299
原创 win32学习笔记(七)
目录前言基本知识如何使用资源接收菜单消息接收键盘消息接收鼠标消息设置文本颜色和背景色程序代码结果前言在学习了Win32创建窗口的基本流程和消息机制后(见上节),我们可以尝试制作一个简易的打字程序。基本知识如何使用资源资源文件是以.rc为扩展名的脚本文件,由资源编译器编译成为以.rec为扩展名的二进制文件,在链接时链入到可执行文件中去。所以想要使用资源首先得新建一个资源脚本文件。所有的资源都关联了一个字符串或数字,如果要引用某个资源,在程序中包含resource.h头文件使用对应的宏名就行了。接
2022-04-15 21:58:05
1294
原创 win32学习笔记(六)
目录前言Windows消息机制创建一个简单的窗口程序WinMain函数MessageBox函数消息队列Win32程序创建窗口的流程主程序代码前言本文主要分享windows的消息机制和win32创建窗口的过程Windows消息机制Windows是依靠消息驱动的。用户创建窗口后,对窗口进行操作,程序应该根据用户的操作而有所响应。但是,程序如何知道用户在窗口上的动作呢?是操作系统告诉程序的。Windows不断向应用程序发送消息,通知它发生了什么事情。这个过程是通过被称为窗口函数或消息处理函数的函数完成的
2022-04-14 22:27:57
759
原创 win32学习笔记(五)
文章目录临界区对象事件内核对象临界区对象为了实现线程同步,即保证在一个时间内只有一个线程对某个共享资源享有访问权,可以使用临界区对象。临界区对象定义在数据段中的CRITICAL_SECTION结构中,也被称为关键段。编程的时候要把临界区对象定义在想保护的数据中。线程访问临界区的数据时,需要先进入临界区,再退出临界区。但是临界区不是内核对象,无法在进程间维持线程同步。//初始化临界区void InitializeCriticalSection(LPCRITICAL_SECTION lpCriti
2022-03-18 13:48:30
306
原创 win32学习笔记(四)
文章目录线程基础知识线程函数__stdcall 与 __cdecl调用规范线程内核对象创建线程CreateThread函数创建_beginthreadex函数创建终止线程正常终止终止线程的方式:线程优先级线程基础知识线程函数线程描述了进程内代码的执行路径,进程中可以有多个线程执行。操作系统会为每个线程轮流分配时间片在CPU上执行。每个线程都必须有一个进入点函数,线程从这个点开始执行。主线程的进入点函数为main,辅助线程的进入点函数被称为线程函数。DWORD WINAPI ThreadProc(
2022-03-17 21:19:05
275
原创 win32学习笔记(三)
文章目录前言测试程序修改器结果前言通过之前的学习,已经可以使用API实现一个简单的内存修改器程序。测试程序首先我们要写一个测试程序作为修改的目标,它的功能是,每按一下键盘,g_nNum更新一次。// test.cpp : Defines the entry point for the console application.//#include "stdafx.h"int g_nNum;int main(int argc,char**argv){int i=198;g_nNum=
2022-03-12 11:07:28
342
原创 win32学习笔记(二)
文章目录前言应用程序的启动过程进程创建——CreateProcess函数获取系统进程终止当前进程终止其他进程总结前言win32学习笔记的第二节,主要关注进程的操作原理和一些API函数的用法。应用程序的启动过程应用程序需要有一个入口函数,例如:控制台应用程序的入口函数为main。但其实操作系统并不是真的去调用main函数,而是去调用C/C++运行期启动函数。此函数会初始化C/C++运行期库,它也会保证在用户的代码执行之前所有全局的或静态的C++对象能够被正确地创建。对win32程序来说,程序的启
2022-03-11 16:29:08
439
原创 win32学习笔记(一)
Win32 API编程的学习笔记(一),介绍了进程与线程、内核对象、对象句柄、虚拟内存等内容。使用参考书为《Windows程序设计》。
2022-03-11 11:21:29
975
原创 c++/c中的argc与argv[]
之前学习c++的时候,使用的main函数一直都不带参数,如下图:int main()但是无论是在opencvi还是win32的学习中总能看到使用了参数的mian函数,因此特意去查了一下资料。带参数的main形式如下(据说这才是正统的c++写法):int main(int argc,char *argv[],char *env[])其中,arg表示参数即argument,argc中的c是counter计数的意思,所以argc是用来统计程序运行时发送给main函数的命令行参数的个数,visual
2022-03-09 13:22:25
1546
原创 crackme练习#2 Afkayas.1.exe
目录一、准备二、分析破解总结一、准备工具:OllyDbg软件:Afkayas.exe二、分析破解先打开程序查看程序功能,该程序需要输入Name和Serial。随便输入获取错误信息。用OD打开程序,通过EP的形式可以知道这是VB的程序。使用中文搜索引擎中的智能搜索,定位到“You get Wrong”。往上查找,找到分支的语句,将其用nop填充即可实现暴力破解。接着向上找到过程的起点。按F8单步运行,感觉VB代码较为冗杂,很多都看不懂。但不要紧,在向下运行的同时观察寄存器和栈。直到出
2022-02-08 22:13:28
837
原创 crackme练习#1 Acid burn详细解答
文章目录一、准备二、破解1.运行程序,查看程序功能2.用OD打开程序三、serial计算的简单分析总结一、准备工具:OllyDbg软件:Acid burn.exe二、破解1.运行程序,查看程序功能打开程序后会先发现弹出了一个对话框点击确定后出现如下界面:左边要求输入是用户名和序列号,而右边仅仅要求输入序列号随便输入看看错误信息,如下:2.用OD打开程序先从较为简单的序列号入手,在反汇编窗口右键选择中文引擎搜索一栏中的智能搜索,找到之前的错误信息“Try Again!!”,
2022-02-08 17:24:59
1318
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人