随笔分类 - 逆向
逆向知识&笔记
摘要:《30天自制操作系统》读书笔记 | day2 汇编语言学习与Makefile入门 好了直接继续day2! 反正上来就是解释一下之前的硬编码,用汇编写了出来: ; hello-os ; TAB=4 ORG 0x7c00 ;指明程序的装载方式 ; 以下的记述用于标准的FAT12格式的软盘 JMP ent
阅读全文
摘要:《30天自制操作系统》读书笔记 | day1 很久之前就想弄了,今天才开始动手 因为我看是电子版,所以没有作者提供的工具,不过没关系,总能解决的 第一步,制作一个iso来启动电脑 这部分跟着书上的做就行了: helloos.img(这个是启动文件,用16进制编辑器写就行了): 基本上就是以上三块东西
阅读全文
摘要:win10+winxp双机调试 | 基于vbox xp系统作为被调试的,win10负责调试,使用虚拟串口进行通信。 首先配置xp,在c:\boot.ini文件中加上 /noguiboot multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWi
阅读全文
摘要:hook WM_PAINT消息进行绘制 采用dll注入的方式(有bug还挺严重的,搞不定了md) dll: HHOOK g_hHook = NULL; // hook后用来重绘的过程函数 LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, L
阅读全文
摘要:win7扫雷逆向&辅助实现 做这个事情是因为软件工程上机课太无聊了,就开始玩扫雷,但是觉得原版界面有点太丑了,就想自己改一改。 参考的资料还挺多的,这个讲xp扫雷的讲的比较好(https://www.cnblogs.com/iBinary/p/7533292.html),但是不太适用于win7版本的
阅读全文
摘要:win32定位窗口过程函数的方法 找RegisterClass的交叉引用然后反过来跟,一会儿就找到了~
阅读全文
摘要:frida | hook windows进程 参考官方文档:https://frida.re/docs/functions/ frida就是动态插桩技术啦 先写个这样子的C程序然后跑起来: #include<stdio.h> #include<Windows.h> void output(int n
阅读全文
摘要:主要参考:https://blog.csdn.net/bjbz_cxy/article/details/81119772 和 https://blog.csdn.net/zhuiyuanqingya/article/details/80844258 我的编译环境是vc6,所以有的宏定义直接写的数字。
阅读全文
摘要:一般来说是游戏存档的一种方式: 简单的实现源码如下: #include <stdio.h> #include <stdlib.h> int main(){ char *p; p = getenv("programdata"); printf("%s\n",p); return 0; } over.
阅读全文
摘要:开新坑了属于是 主要是在看雪上面看到了这样一个文章:https://bbs.pediy.com/thread-259962.htm 看的时候觉得很简单,亲手操作的时候人都麻了,每个游戏都不太一样,我直接用的我手头的资源去尝试的。 我选择的是Clannad,程序本身加了壳,我没仔细研究这个的脱壳,就想
阅读全文
摘要:总是遇到ollvm的样本,这次自己搭一个环境正向研究一下 主要参考的文章是这个:https://blog.csdn.net/hzhdy/article/details/94737931 主要步骤: 下载ollvm的源码 需要配置好cmake和mingw的环境,这里我mingw直接用的devc的环境
阅读全文
摘要:和上一篇随笔原理是一样的IAThook 这次hook的是timeGetTime这个函数,位于winmm.dll中,直接上代码了。 1.dll: // 1.cpp : Defines the entry point for the DLL application. // #include "stdaf
阅读全文
摘要:通过修改IAT来hook。 注意点:由于IAT不一定是连续的,因此有时候会要先定位那个模块,再找对应的IAT表。 主要测试代码如下: 1.dll(用于注入的dll): // 1.cpp : Defines the entry point for the DLL application. // #in
阅读全文
摘要:植物大战僵尸资源解密分析 分析的时候定位main.pak字符串,具体的分析流程有点多,有空的时候整理好贴上。 主要流程 对main.pak使用win32api进行大小等的判断,如果不存在就准备从资源中获取 通过一个主要的函数结构体对main.pak的文件头部分进行读取,在读取的过程中每个字节会xor
阅读全文
摘要:参考视频:https://www.bilibili.com/video/BV1944y1y74f 先丢分析: 再丢代码: int full_jalapeno(){ // 辣椒清场 /* 火爆辣椒的id是0x14 樱桃炸弹的id是0x02 找对象基地址 1E0A6A30 =[edi(00AA9E08)
阅读全文
摘要:类中有虚函数就会存在虚表。 主要是一种间接call: call dword ptr [xxxxxxx]; 因此就可以修改间接跳转的地址实现hook。 主要步骤: 找到虚表 修改虚表的物理页属性可写 修改虚函数地址 代码如下: #include <stdio.h> #include <windows.
阅读全文
摘要:基于上一篇博客里的简单win32app实现: // windowsapp.cpp : Defines the entry point for the application. // #include "stdafx.h" HINSTANCE g_hInstance; // 全局变量程序句柄 // 定
阅读全文
摘要:主要的过程都写在下面代码中的注释里啦: // windowsapp.cpp : Defines the entry point for the application. // #include "stdafx.h" LRESULT CALLBACK WindowProc(HWND hwnd, UIN
阅读全文
摘要:重定位表 dll加载的时候ImageBase可能会相同然后操作系统负责将它加载在内存的其他地方。 这个时候有的不是RVA的地址就会出问题,如果不修正就没办法用了。 重定位表就是记录了硬编码中需要修改的地址,如果没有在对应的ImageBase展开,就需要修改 位置在扩展Pe头的最后一个成员数组中的第六
阅读全文
摘要:查基址这个东西就是找一个偏移嘛。 这次用的程序是1.0原版的植物大战僵尸。 找了个简单点的数据就是阳光,直接搜2次就能找到这个int变量。 然后查对于这个地址的内存访问。 找到的里面有个偏移,再对之前计算的那个进行查找,然后查看内存访问,最后结果如下: 阳光 = [[基地址+0x768] + 556
阅读全文