自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (4)
  • 收藏
  • 关注

原创 Unity屏幕适配

​​​ 在适配之前,我们可以看到canvas是基于720x1280的分辨率 以宽度为基准来做适配的。 在这个界面中,我们可以看到界面分为两部分,上面是视频,下面是UI界面,由于视频不能被拉伸,也不能只显示部分视频,所以在视频这里需要计算视频的宽高。 标准尺寸的视频比例是720x540,以宽为基准,所以需要计算视频的高度,通过上面获取屏幕的宽高来计算出视频的高度,以及下面UI的高...

2019-09-11 14:30:16 1176

转载 LoadLibrary查找路径及相关问题解决

LoadLibrary失败   正常情况,在一个exe中LoadLibrary(DLL1)可以获得正常的结果;但是,当我们需要load的DLL1如果调用了其它的DLL2, 那么我们就会得到一个结果:The program can't start because ****.dll is missing from you computer. Try reinstalling the progr

2017-02-16 16:17:49 9163

原创 dll注入

// DllInjection.cpp : Defines the entry point for the console application.//#include #include #pragma comment(lib, "Shlwapi.lib")typedef struct _SHELL_CODE{ char szPath[MAX_PATH]; //加载dll的

2017-02-13 11:17:10 309

转载 EXE注入分析之傀儡进程

最近学习PE结构,顺便看到了一篇WIN32 EXE注入的文章,代码是04年的,比较古老了,但是代码写的很好,受益匪浅,然后在百度很少找到翻译的比较清楚的文章,这篇我在代码中加了中文注释,方便菜鸟理解,阅读这篇帖子需要熟悉PE结构,如果你不懂PE结构建议你先去学习下,说错的地方请各位大神指正,板砖吐口水都可以。--- 我是淫荡的分割线---提到傀儡进程,首先想到的

2017-02-07 16:16:47 1784 1

转载 傀儡进程原理及调试

傀儡进程创建过程:(1) CreateProcess一个进程,并挂起,即向dwCreationFlags 参数传入CREATE_SUSPENDED;(2) GetThreadContext获取挂起进程CONTEXT,其中,EAX为进程入口点地址,EBX指向进程PEB;(3) ZwUnmapViewOfSection卸载挂起进程内存空间数据;(4) VirtualAllo

2017-02-07 15:35:59 1520

原创 Dll无模块加载(二)

以 gh0st源码为例,我将服务端代码迁移了出来,因为在网上的gh0st代码基本上都是release版本的,将服务端代码取出来方便调试。在服务端生成的dll,显示加载的话在OD中明显可以看到相关模块,所以为了达到模块隐藏的目的,需要从内存中加载相关模块,从而在OD中看不到这个dll。在百度上面搜索MemLoadDll找到了相关的源码,但是大部分源码调用MemLoadLi

2017-01-10 12:00:42 1484

原创 加载Dll的两种方法(一)

加载Dll有两种方法,分别为隐式加载(MemLoadDll)和显示加载(LoadLibrary)。(一)在gh0st中,得到server.dll之后,我使用了这两种加载dll的方式。显示加载Dll方法:1、使用LoadLibrary加载dll文件,获得dll模块的句柄2、定义一个函数指针,并声明一个变量,即导出函数3、使用GetProcAddress取得该dll中目标函数的

2017-01-09 13:53:13 4241

原创 crackme 网站

推荐逆向crackme的网站点击打开链接

2017-01-02 14:48:46 589

转载 UpdateResource系列函数用法

[cpp] view plain copy 最近用到了需要实时更新exe和dll中的资源文件,网上查了很多资料,做一些总结,方便下次使用。  UpdateResource这个函数主要用于添加、删除或者替换PE文件中的资源,它的原型为[cpp] view plain copy BOOL WINAPI UpdateResource

2016-12-30 10:38:47 6185

原创 SetFileAttributes和GetFileAttributes

设置文件或目录的属性,函数原型如下:BOOL SetFileAttributes(    LPCTSTR lpFileName,    DWORD dwFileAttributes);    参数:    lpFileName:输入参数,为需要设置文件属性的文件或目录。  返回值:    返回BOOL值,表示是否成

2016-12-29 11:14:09 533

原创 NetUserGetLocalGroups提取特定用户的本地组

The NetUserGetLocalGroups function retrieves a list of local groups to which a specified user belongs.也就是获取一组特定用户所属的本地组NET_API_STATUS NetUserGetLocalGroups( _In_ LPCWSTR servername, //指向DN

2016-12-29 10:11:48 1536

原创 menu API

获得指定菜单的flag,如果这个菜单打开了子菜单,这个函数也将返回子菜单的数量。UINT WINAPI GetMenuState( _In_ HMENU hMenu, //将打开的菜单句柄 _In_ UINT  uId, //菜单号 _In_ UINT  uFlags //参数的理解方式);uflags:Indicates how the uId pa

2016-12-28 17:31:21 321

原创 SetClassLong,GetClassLong 动态改变光标

void CTestCursorDlg::OnLButtonUp(UINT nFlags, CPoint point){ // TODO: Add your message handler code here and/or call default SetClassLong(m_hWnd,GCL_HCURSOR,(long)m_hCursor); CDialog::OnLBut

2016-12-28 17:15:44 1584

原创 Resource API

输入module的特定资源的类型和名称来获得资源的位置HRSRC WINAPI FindResource( _In_opt_ HMODULE hModule,//处理包含的可执行文件的模块 _In_     LPCTSTR lpName, //指定资源的名称 _In_     LPCTSTR lpType //指定资源类型);返回值:成功返回指定资源信息块

2016-12-28 14:00:46 461

原创 AVI API

打开AVI文件,并且返回地址,主要获得打开的次数,但是不释放,释放要用到AVIFileRelease;STDAPI AVIFileOpen(  PAVIFILE *ppfile, //缓冲区,接受IAVIFILE指针  LPCTSTR  szFile, //要打开的文件名  UINT     mode, //打开文件的权限模式,磨人的是OF_READ;  C

2016-12-28 11:25:08 1528

原创 音频wave API

停止音频输入The waveInStop function stops waveform-audio input.MMRESULT waveInStop(  HWAVEIN hwi //Handle to the waveform-audio input device;);返回值:成功  MMSYSERR_NOERRORReturn code

2016-12-28 10:33:19 407

原创 pdh相关的获取CPU性能API

HeaderPdh.hLibraryPdh.libDLLPdh.dll创建一个新的查询去处理一些表现的数据PDH_STATUS PdhOpenQuery( _In_  LPCTSTR    szDataSource,//如果为NULL,数据表现形式为实时的数据,非空字符串为从日志中获

2016-12-27 16:47:23 753

转载 完成端口(I/O completion)原理

异步过程调用(apcs)问题:只有发overlapped请求的线程才可以提供callback函数(需要一个特定的线程为一个特定的I/O请求服务)。完成端口(I/O completion)的优点:不会限制handle个数,可处理成千上万个连接。I/O completion port允许一个线程将一个请求暂时保存下来,由另一个线程为它做实际服务。并发模型与线程池:

2016-12-27 15:17:51 252

原创 WSASocket端API

创建一个与制定传送服务提供者绑定的套接口此函数为socket()的扩展版本,其功能都是创建一个原始套接字。使用时需要包含winsock2.h 头文件和链接ws2_32.lib库。SOCKET WSASocket( _In_ int                af,//地址族规范,目前仅支持AF_INET格式 _In_ int                t

2016-12-27 10:29:11 1086

原创 OllyDebug使用1

Ollydebug界面上有四个窗口,分别是1、反汇编窗口:地址,机器码,反汇编代码,注释2、寄存器窗口3、数据窗口4、堆栈窗口L:log M:memory  W:window H:Handle C:cpu K:堆栈调试:F2设置删除断点F7,类似VC中的F10,进入代码F8:类似F11F9:运行调试程序,直到断点处寄存器:ESP:指向

2016-12-26 16:00:00 2402

原创 gh0st3.6执行流程

1、CGh0stApp–>Initlnstance() 1)配置界面信息及其他 2)从.ini文件中读取监听端口ListenPort和最大连接数MaxConnection,并做相应的调整 3)调用((CMainFrame*) m_pMainWnd)->Activate(nPort, nMaxConnection)去激活服务器,(跳到2)2、CMainFrame–>Activat

2016-12-23 11:09:03 842

原创 error LNK2001: unresolved external symbol __imp__Shell_GetImageLists@8

在VC6.0中Tools->option->derrectory 将include files和library files中psdk的位置放置在最上面。

2016-12-22 17:19:14 540

原创 gh0st files

在resource.h中定义了控制端界面的所有属性的ID名称在MainFrm.cpp中设置界面整个框架然后其他类对框架里面进行“修饰” 以及功能的实现。在FileManagerDlg中实现了第一项:文件管理,包括文件传输,鼠标移动功能的实现。在ScreenSpyDlg.cpp实现了屏幕监控以及屏幕控制的功能。在KeyBoardDlg.cpp中实现了,键盘记录的功能,以及

2016-12-22 11:41:52 1083

原创 VC6.0 debug gh0st遇到的问题

defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library方法:project setting -> link -> Category: input ->Igore Libraries = LIBC.liblibs之间用“,”隔开。“Ingore all default librari

2016-12-20 13:49:38 248

原创 gh0st源码分析-gh0st_1

在gh0st classes中定义了一堆头文件和他们的实现函数,先从IniFile.h头文件看起:定义了设置获取文件名的函数,以及Data的类型转换函数和get函数IniFile.cpp:初始化文件,并且设置格式的函数实现。gh0stDoc.h:class CDocument is the main document data abstraction,然后CGh0stD

2016-12-16 16:46:57 731

原创 gh0st源码分析-install classes

第一次接触到gh0st的源码,一脸懵逼,根本不知道这个源码是干什么的,只见它有三个class类,甚至都不知道怎么编译。好吧,现在开始我的gh0st源码的自学与分享之路。参照文章:点击打开链接        我们从整体来看,有三个类,不知道从何看起。然后我们先开始找main函数。在install classes中我们找到了WinMain入口函数。        GetInputS

2016-12-13 17:45:46 705

原创 windows核心编程-用内核对象进行线程同步

前言:    在用户模式下进行线程同步的最大好处就是速度非常快。与用户模式下的同步机制相比,内核对象的用途要广泛的多,内核对象唯一的缺点就是它们的性能。调用本章介绍的任何一个新函数时,调用线程必须从用户模式切换到内核模式。对于线程同步来说,这些内核对象中的每一种要么处于触发状态,要么处于未触发状态。比如进程创建时,进程内核对象为未触发状态;进程结束时,进程内核对象为触发状态,当进程内核对象

2016-12-08 13:53:50 383

原创 windows核心编程-互斥量的内核对象

互斥量(mutex)内核对象用来确保一个线程独占对一个资源的访问。互斥量对象包含一个使用计数、线程ID以及一个递归计数。互斥量与关键段的行为完全相同。但是,互斥量是内核对象,而关键段是用户模式下的同步对象。HANDLE WINAPI CreateMutex( _In_opt_ LPSECURITY_ATTRIBUTES lpMutexAttributes, _In_    

2016-12-07 16:24:34 558

原创 windows核心编程-信号量内核对象

信号量内核对象用来对资源进行计数。与其他内核对象不同的是,它还包含了两个32位值:一个最大资源计数和一个当前资源计数。最大资源表示信号量可以控制的最大资源数量,当前资源计数表示信号量当前可用的资源的数量。HANDLE WINAPI CreateSemaphore( _In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, //安全

2016-12-07 15:44:53 493

原创 windows核心编程-可等待的计时器内核对象

要创建可等待的计时器,我们需要调用CreateWaitableTimer函数HANDLE WINAPI CreateWaitableTimer( _In_opt_ LPSECURITY_ATTRIBUTES lpTimerAttributes, _In_     BOOL                  bManualReset, //TRUE手动,FALSE自动 _In

2016-12-07 14:57:44 444

原创 windows核心编程-事件内核对象

在所有的内核对象中,事件内核对象是个最基本的对象。事件能够通知一个操作已经完成。事件内核对象的组成一个使用计数(与所有内核对象一样),一个用于指明该事件是个自动重置的事件还是一个人工重置的事件的布尔值,一个用于指明该事件处于已通知状态还是未通知状态的布尔值。 有两种不同类型的事件对象一种是人工重置的事件,另一种是自动重置的事件。当人工重置的事件得到通知时

2016-12-06 19:47:11 655

原创 windows核心编程-WaitForMultipleObjects

内核对象有:进程、作业、线程...。这些内核对象都可以用来进行同步。对线程来说,这些内核对象要么处于触发状态,要么处于非触发状态。例如:进程内核对象在创建的时候总是处于未触发状态。当进程终止的时候,操作系统自动使进程内核对象变成触发状态。当进程内核对象被触发后,它将永远保持这种状态,再也不会变回到未触发状态。DWORD WINAPI WaitForMultipleObj

2016-12-06 12:50:28 290

原创 windows核心编程-条件变量

当想让写入者线程和都去这线程以独占的方式或共享的方式访问一个资源的时候,可以使用SRWLock。在这些情况下,如果都去这没有数据可以读取,那么它应该将锁释放并等待,直到写入者线程产生了新的数据为止。如果用来接收写入者线程的数据结构已满,那么写入者同样应该释放SRWLock并进入睡眠状态,直到读取这线程把数据结构清空为止。      我们希望线程以原子的方式把锁释放并将自己阻塞,直到某一

2016-12-05 19:08:35 741 1

原创 windows核心编程-关键段与SRWLock

线程同步的方式主要有:临界区、互斥区、事件、信号量四种方式。临界区线程同步也叫关键段线程同步一、关键段关键段(Critical Section)是一小段代码,它在执行之前需要独占一些共享资源的访问权。这里的原子方式是代码除了当前线程之外,没有其他任何线程会同时访问该资源。当然系统仍然可以暂停当前线程去调度其他线程。但是在当前线程离开关键段之前,系统是不会去调度任何想要访问统

2016-12-05 15:03:11 570

原创 windows核心编程-用户模式下的线程同步1

一、原子访问原子访问就是,一个线程在访问某个资源的同时保证没有其他线程会在同一时刻访问同一资源。"原子性"就是在原子访问中途不能被打断。windows提供Interlocked系列函数实现这一功能。LONG InterlockedExchangeAdd(  PLONG volatile *plAddend, //要计算的长整形变量的地址   LONG          

2016-12-05 13:53:22 263

原创 windows核心编程-C/C++标准库与多线程

1、由于历史原因,标准C/C++库在开始时并没有正对多线程做考虑(比如使用了一些全局变量),在VC++中对标准库做了多线程安全扩展2、要利用这些扩展就需要使用VC++扩展库提供的创建线程函数_beginthread,_beginthradEx等函数来替代Windows的原始API--CreateThread3、因为这些创建函数在内部考虑了多线程安全初始化C/C++标准库,使用这些替

2016-12-02 09:45:10 1875

原创 windows核心编程-线程消息队列

/*该程序演示了通过PeekMessage强制创建消息队列,然后Sleep等待执行创建的线程*/#include#include#include#define GRS_USEPRINTF() TCHAR pBuf[1024]={}#define GRS_PRINTF(...)\ StringCchPrintf(pBuf, 1024, __VA_ARGS__); \ WriteC

2016-12-01 21:06:39 582

原创 windows核心编程-线程可警告状态以及APC队列

一、线程可警告状态的真实含义1、通过另一些方法让线程"暂停"(非SuspendThread方法,比如SleepEx,wait函数族等),并可以进入一种称之为Alterable的状态(可警告状态)2、这种状态本质上其实是高速系统调度程序:当前现成的函数调用栈以及对应的寄存器状态可以直接被用来调用别的一些函数,一般这种函数都被称为异步函数3、通常系统会用此线程环境(理解为函数调用器

2016-12-01 19:48:06 1259

原创 windows核心编程-线程的亲缘性

1、类似于进程的亲缘性只在多CPU(多核)系统中哪几/1个CPU上执行的行为2、相对于进程的亲缘性,不能指定线程执行在超过进程亲缘性范围外的CPU上执行3、线程只能执行在进程亲缘性CPU集合的子集上4、通过调用SetThreadAffinityMask方法,可以为线程指定可以运行在其上的CPU的位掩码(原理同进程亲缘性方法)5、通常利用这个方法,将线程和CPU一一绑定,放置调度

2016-12-01 18:49:26 1553

原创 windows核心编程-线程挂起和Context

一、线程挂起(暂停)1、SuspendThread用来暂停一个线程的执行,线程暂停时,不会被调度执行2、ResumeThread用来恢复一个暂停线程的执行(一个暂停的线程无法调用这个方法来恢复自己,3、因为暂停的线程不可能被执行)暂停县城总是立即被暂停,而不管被暂停的线程执行到了哪个指令线程内核对象内部,存储了一个暂停计数的值,每调用一次,SuspendThread方法该值就加1,

2016-12-01 13:42:03 2045

SVGParser ios SVG转json

使用方法:cd到此目录下 ./SVGParser -d后把文件拖进去就好了

2019-10-12

location.svg

使用方法:cd到此目录下 ./SVGParser -d后把文件拖进去就好了

2019-10-12

System.Drawing.dll

System.Drawing.dll 很多会报错(plugin targets .net4.x and is marked) 这个是OK的

2019-09-26

VC6.0在win7下调试插件

VC6.0在win7下调试插件

2016-12-22

空空如也

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

TA关注的人

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