摘要: 源码: #include "stdio.h" #include <Windows.h> #include "conio.h" LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam,LPARAM lParam)//钩子过程 { printf("1") 阅读全文
posted @ 2020-11-29 12:10 乘舟凉 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 1 #include <stdio.h> 2 #include <conio.h> 3 #include <windows.h> 4 #define DEF_DLL_NAME "keyHook.dll" 5 #define DEF_FUN_NAME "keyboardPrc@12" 6 7 8 9 阅读全文
posted @ 2020-11-28 14:54 乘舟凉 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 装载自https://www.cnblogs.com/fxd980519/articles/4807756.html 当我们用 VS 或其它编程工具生成了可执行exe要运行它必须要保证其目录下有一大堆dll库文件,看起来很不爽,用专业的安装程序生成软件又显得繁琐,下面这个方法教你如何快速把exe文件 阅读全文
posted @ 2020-11-27 11:22 乘舟凉 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 其中可能有错误的理解,仅供参考 1.按类型和目标程序是否钩取(如果不是全局钩子的话,全局钩子只考虑类型) 2.将接收函数注入目标程序地址空间中(如果目标程序没有的话) 3.将消息送入接收函数中 由此可见钩子与接收函数是1对多的关系,通过目标程序判断选择对应的接收函数 阅读全文
posted @ 2020-11-25 22:39 乘舟凉 阅读(60) 评论(0) 推荐(0) 编辑
摘要: VC++6.0 上图是VC++6.0开发的程序的入口点 它的主函数就在1000处 我们使用表达式追踪 见下图 结果 见下图 果然找到了 main函数,里面写有hello world代码,但是并不是401000一定是Main函数,因为VC++6.0会是按你写的代码顺序加载内存的,所以也有可能是你写的其 阅读全文
posted @ 2020-11-23 14:25 乘舟凉 阅读(569) 评论(1) 推荐(0) 编辑
摘要: 下面描述几个常用的: IMAGE_SCN_CNT_CODE 包含代码,常与0x10000000一起设置 IMAGE_SCN_CNT_INITIALIZED_DATA 包含已初始化的数据 IMAGE_SCN_CNT_UNINITIALIZED_DATA 包含未初始化的数据 IMAGE_SCN_MEM_ 阅读全文
posted @ 2020-11-19 11:11 乘舟凉 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 上一次我介绍了一种自己调试patchme的独特方式,今天介绍另一中方法 上次的网址 https://www.cnblogs.com/czlnb/p/13996202.html 代码结构: 这一次我们要插入的地方是代码块4的末尾,因为这个地方已经运行了解压程序,但是没有运行校验程序,所以我们要修改代码 阅读全文
posted @ 2020-11-18 12:10 乘舟凉 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 汇编代码看得头皮发麻,别担心一切不过是数据的流动 使用代码结构这个技能就能帮你捋清思路 比如说逆向工程原理 第二十章的示例代码 它的代码结构是 有序号的都是代码,大写字母是被操作的数据块 方块中心的是代码的功能,左边是地址 左边单箭头的是位置不够在外面写,而右边双箭头是被操作的数据块内的代码 代码的 阅读全文
posted @ 2020-11-17 20:59 乘舟凉 阅读(128) 评论(0) 推荐(0) 编辑
摘要: https://pan.baidu.com/s/1Taaa3hElERWVQagfRepfZA 提取码:439s 阅读全文
posted @ 2020-11-17 20:42 乘舟凉 阅读(789) 评论(1) 推荐(0) 编辑
摘要: 在逆向核心原理中,第二十章的实验是调试patchme 见下图1 图1 最后实验的结果: 书上的思路是修改跳入OEP的jmp指令,以此来插入自己的代码,但是这部分的指令是被加密过的,所以修改它时要手动做加密,十分麻烦。 所以我想出了一个更好的办法:因为我们要插入字符串,而字符串是被加密的,而且后面还有 阅读全文
posted @ 2020-11-17 20:13 乘舟凉 阅读(183) 评论(0) 推荐(0) 编辑