摘要: 其中可能有错误的理解,仅供参考 1.按类型和目标程序是否钩取(如果不是全局钩子的话,全局钩子只考虑类型) 2.将接收函数注入目标程序地址空间中(如果目标程序没有的话) 3.将消息送入接收函数中 由此可见钩子与接收函数是1对多的关系,通过目标程序判断选择对应的接收函数 阅读全文
posted @ 2020-11-25 22:39 乘舟凉 阅读(72) 评论(0) 推荐(0)
摘要: VC++6.0 上图是VC++6.0开发的程序的入口点 它的主函数就在1000处 我们使用表达式追踪 见下图 结果 见下图 果然找到了 main函数,里面写有hello world代码,但是并不是401000一定是Main函数,因为VC++6.0会是按你写的代码顺序加载内存的,所以也有可能是你写的其 阅读全文
posted @ 2020-11-23 14:25 乘舟凉 阅读(599) 评论(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 乘舟凉 阅读(323) 评论(0) 推荐(0)
摘要: 上一次我介绍了一种自己调试patchme的独特方式,今天介绍另一中方法 上次的网址 https://www.cnblogs.com/czlnb/p/13996202.html 代码结构: 这一次我们要插入的地方是代码块4的末尾,因为这个地方已经运行了解压程序,但是没有运行校验程序,所以我们要修改代码 阅读全文
posted @ 2020-11-18 12:10 乘舟凉 阅读(154) 评论(0) 推荐(0)
摘要: 汇编代码看得头皮发麻,别担心一切不过是数据的流动 使用代码结构这个技能就能帮你捋清思路 比如说逆向工程原理 第二十章的示例代码 它的代码结构是 有序号的都是代码,大写字母是被操作的数据块 方块中心的是代码的功能,左边是地址 左边单箭头的是位置不够在外面写,而右边双箭头是被操作的数据块内的代码 代码的 阅读全文
posted @ 2020-11-17 20:59 乘舟凉 阅读(144) 评论(0) 推荐(0)
摘要: https://pan.baidu.com/s/1Taaa3hElERWVQagfRepfZA 提取码:439s 阅读全文
posted @ 2020-11-17 20:42 乘舟凉 阅读(889) 评论(1) 推荐(0)
摘要: 在逆向核心原理中,第二十章的实验是调试patchme 见下图1 图1 最后实验的结果: 书上的思路是修改跳入OEP的jmp指令,以此来插入自己的代码,但是这部分的指令是被加密过的,所以修改它时要手动做加密,十分麻烦。 所以我想出了一个更好的办法:因为我们要插入字符串,而字符串是被加密的,而且后面还有 阅读全文
posted @ 2020-11-17 20:13 乘舟凉 阅读(212) 评论(0) 推荐(0)
摘要: 下图①是我遇到的问题,执行到这里时发现是单字节,但执行还是可以执行 经过我努力的搜索,总于找到了和我有同样遭遇的老哥,并且有大佬给出了解决方案 见下图② 这是我按了Ctrl + a后的情况 见下图 ③ 虽然大佬的方法正确,但是我并不认同他对原因的分析。 因为我反汇编的程序是运行时解压缩程序,而这段代 阅读全文
posted @ 2020-11-15 22:47 乘舟凉 阅读(205) 评论(0) 推荐(0)
摘要: 假如我的幸运数字是6,但是我不想让别人知道,所以我对其进行加密 加密: 步骤一: 将数字6转换成二进制 6 > 00000110 步骤二:选取一个字节的数字 01010101 ① 步骤三:进行异或运算 01010011 步骤四:选取一个字节的数字(和上面不同的)10101010 ③ 步骤五:进行异或 阅读全文
posted @ 2020-11-14 11:11 乘舟凉 阅读(123) 评论(0) 推荐(0)
摘要: XOR 指令在两个操作数的对应位之间进行(按位)逻辑异或(XOR)操作,并将结果存放在目标操作数中: XOR destination, source 阅读全文
posted @ 2020-11-14 10:32 乘舟凉 阅读(1773) 评论(0) 推荐(0)