crackme杂记
创建一个线程
使用 threadproc函数,可以在指定的函数地址创建一个线程,函数内写内容
DWORD WINAPI ThreadProc(_IN_LPVOID lpparameter) |
这样我们就实现了不修改代码实现破解补丁。
实现取得线程的上下文:
|
如下图,就是我们获得的线程上下文
cpu如何同时运行多个进程,其实算不上同时进行,只是在不同的进程中快速切换实现的”同时”,那么cpu为什么在切换道另一个进程时还能继续运行这个进程呢?如上图所示,cpu可以获取线程的上下文并保存,从而知道自己在该进程中运行到了哪里。从而实现可以在不同的进程中来回切换。
如果我们再写一个很大的项目时产生了报错,我们可以用上图的方法进行异常处理,先使用AddVectoredExceptionHandler注册一个异常处理。此时如果有异常的话就会跳转到上面的函数VecyoredHandler中打印我们的eip的位置,也就是异常处理的位置。
我们可以知道是int 3的问题,那么我们如何解决这个问题呢?我们可以将int 3改回来,或者直接修改eip的值,修改之后再改回eip。
这个程序的作用是当我们下断点的话就退出程序,原理是读取我们的进程的字节值做对比,如果不一致就退出程序。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 z1inのblog!
评论