HGAME_WEEK4_WP
WEEK4-RogerThat WP这周有点寒碜,只有三道题
Revm这道题是一道虚拟机相关的题目,因此分许需要花不少时间,在没做出来之前也慢慢试着写点东西,希望也能有所收获。
首先寻找到main函数
int __cdecl main(int argc, const char **argv, const char **envp)
{
FILE *v3; // rax
int v4; // eax
const char *v5; // rcx
char Buffer[40]; // [rsp+20h] [rbp-38h] BYREF
puts("Welcome to ovm++!");
j_inilization();
puts("Input your flag: ");
v3 = _acrt_iob_func(0);
fgets(Buffer, 35, v3);
j_printf_("Your flag is: %s\n", Buffer);
puts("VM started successfully!");
j_vm_fun ...
HGAME_WEEK1_WP
WEEK1-RogerThatWebHitchhiking_in_the_Galaxywatermelon这瓜,实在是顶,一开始根本找不到它在哪实现的检测。另外一方面,等检验分数的时候已经是到顶了,但是到顶可太慢了,就算一个一个叠上去也可能掉下来。上截图:
宝藏走私者http-headers,也不清楚为什么复现不了,记得是改了host,referer,X-Forwarded-For,Client-IP。
智商检测鸡(来比划比划)我的思路就是自动去算积分,好久没码代码实在有点难顶
import requests
from sympy import *
import re
x = symbols('x')
a = 12
b = 8
min = -77
max = 70
url_string1="http://r4u.top:5000/api/verify"
url_string2="http://r4u.top:5000/api/getQuestion"
url_string3="http://r4u.top:5000/api/getStatus"
url_flag = "htt ...
findkey
findkey write_up
没想到给小明神秘盒子的论坛高手居然是本次ctf的策划人之一,在比赛的时候,神秘盒子再一次出现,小明下意识的再次重复之前的操作,结果显而易见得失败了,赶紧帮小明解答这个加了点佐料的盒子。 注意:得到的 flag 请包上 flag{} 提交
最近闲来事贼多,做一题逆向暂且表示自己是个re手(文明六超好玩)
打开一看,这不是微软的模板嘛,file选中可以下滑找到exit,help选中下滑有一个about,打开都没什么东西。怪不得叫做findkey。此时题目可能做什么我稍微清楚了点,不过由于我开发的少,所以中间还是有不少波折。
这时候打开ida看看。从WinMain()入手。
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
CHAR Buffer[100]; // [esp+4Ch] [ebp-84h] BYREF
HACCEL hAccTable; // [esp+B0h] [eb ...
反调试之去除硬件断点
反调试之去除硬件断点首先介绍几个X86下调试寄存器D0…D7,已经没有D4,D5了在wiki上说是被D6,D7取代了。
D0…D3
Each of these registers contains the linear address associated with one of four breakpoint conditions. Each breakpoint condition is further defined by bits in DR7.
The debug address registers are effective whether or not paging is enabled. The addresses in these registers are linear addresses. If paging is enabled, the linear addresses are translated into physical addresses by the processor’s paging mechanism. If paging is not ena ...
marked-book
windows systemWindows内核原理与实现Windows 内核设计思想DirectX12introduction to 3d game programming with directx 12
进程/线程 的实际入口
进程/线程 的实际入口我之前会以为。进程装载,就只是是创建一块内存,然后把程序映射到这块内存,然后初始化寄存器等,再把 pc 设置到 pe 中的 enter point 中。
很显然我之前犯了形而上学的错误,认识应该是递进的,把细节忽略了然后自以为是的进行总结,结果就是学的不深入,学了和没学似的。
这是一个可以从软件讲到操作系统,再从操作系统讲到硬件,再回到软件的一个复杂的过程,虽然 windows 是闭源的。
为了分析 windows 创建进程的过程,首先要讲清楚一些数据结构和 windows api 的一些命名方式
windows api name convention
Prefix Description
Alpc Advanced Local Procedure Calls
Cc Common Cache
Cm Configuration manager
Dbg Kernel debug support
Dbgk Debugging Framework for user mode
Em Errata manager
Etw Event Tracing for Win ...
WIN HANDLE
首先什么是 HANDLEIt’s an abstract reference value to a resource, often memory or an open file, or a pipe. (来自stackoverflow)我个人的理解,HANDLE 就是一种为了统一资源的封装,所有的资源,内存,进程,甚至各种各样的设备,都可以通过 windows api,通过 handle 操作,拥有了 handle,就拥有了资源的操作权。比如说,在 windows 创建进程的过程中,通过 api monitor 可以很好的知道操作系统在用户态和内核交互的过程中做了什么,我们会发现为了创建一个进程,我们会获取一段内存,然后再把程序映射进去,对内存的操作也都是通过 HANDLE 传入传出实现的。
被面试官问了 HANDLE 和 PID 的关系因为没有仔细分析,或者说是看过类似的资料,只能口糊一个。
HANDLE 和 PID 都是 32 位无符号整数。
系统,用户根据 pid 唯一确定一个进程可以通过 handle 以及 每个进程的句柄表 获得内核对象的实际地址,是一种间接的映射。
曾经以 ...