- 博客(29)
- 资源 (2)
- 收藏
- 关注
原创 Cs修改器(部分功能)
这是我根据b站上面的视频使用ce初步修改,自己用vs2022用c语言实现的,完成了其中的部分功能在自己的电脑上完美运行,不知道其他的怎么样
2022-10-09 21:45:38
1412
原创 有意思的 CrackRTF
CrackRTF最近刷题遇到的不会又不错的题,考了几个我没有见过的API,以及一种奇妙的给出flag的方式题目描述在互联网时代,兼容就是胜利,兼容就是王道。为了遏制微软一家独大的趋势,小明自诩民族斗士,向微软CEO挑战,CEO给了他一个文件,据说破解后能得到一个微软的多信息文本格式文件。只有得到了才能获得挑战CEO的机会。小明绞尽脑汁,最后不得不求助大家。。。兄弟们该出手时就出手! 注意:得到的 flag 请包上 flag{} 提交main函数:int __cdecl main_0(int arg
2022-05-17 18:57:53
342
原创 远程线程及其注入实现示例
远程线程先创建一个线程:#include <stdio.h>#include <windows.h>void Fun(){ for (int i = 0; i < 10; i++) { Sleep(200); printf("FUN(%d)-------------------\n",i+1); } }DWORD WINAPI ThreadProc(LPVOID lpParameter){ Fun(); return 0;}i
2022-05-03 16:13:41
625
原创 windows 消息钩取
windows 消息钩取当键盘发生输入事件时,键盘消息钩子就会提前获得消息的内容、类型并且可以对其做出修改实现消息钩子的api:SetWindowsHookExHHOOK WINAPI SetWindowsHookEx( _In_ int idHook, 设置钩子的类型.意思就是我要设置的钩子是什么钩子. 可以是监视窗口过程.可以是监视消息队列. _In_ HOOKPROC lpfn, 根据钩子类型.设置不同的回调函数. _In_ H
2022-04-27 21:34:23
2087
原创 攻防signIn(RSA加解密)
攻防signIn拖入ida:main__int64 __fastcall main(int a1, char **a2, char **a3){ char v4[16]; // [rsp+0h] [rbp-4A0h] BYREF char v5[16]; // [rsp+10h] [rbp-490h] BYREF char v6[16]; // [rsp+20h] [rbp-480h] BYREF char v7[16]; // [rsp+30h] [rbp-470h] BYREF
2022-04-25 20:06:44
275
原创 WIN32 线程的一些知识
线程线程概念1.时间上的概念:是附属在进程上的执行体当前正在运行的具体的代码 。创建线程:使用CreateThread()函数HANDLE CreateThread( [in, optional] LPSECURITY_ATTRIBUTES lpThreadAttributes,//安全描述符 [in] SIZE_T dwStackSize,//堆栈的初始大小(不写系统会给出默认的 1MB大小 [in]
2022-04-24 11:32:26
502
原创 《逆向工程核心原理》20章内嵌补丁
《逆向工程核心原理》20章内嵌补丁内嵌补丁存在的原因由于一些程序(运行时解压缩、加密文件)需要打补丁时,难以修改指定的代码为了修改它们, 插入额外的“洞穴代码” (程序运行同时运行这个额外代码), 来达到打补丁的效果原理图:书中示例的patchme程序确定调试分析EP:10E9是输出对话框的函数,跟进看看同样跟进里面的call……9B函数发现三个用于解码循环语句是一个解密代码(A3~AD)对4010f5 ~ 4010f5+154(40f1248) 的区域进行 xor 4
2022-04-18 00:56:47
341
2
原创 攻防Replace
攻防Replace查壳,发现是upx壳,upx -d进行脱壳脱壳后拖入ida看伪代码main函数int __cdecl main(int argc, const char **argv, const char **envp){ int v3; // kr00_4 char Buffer[40]; // [esp+4h] [ebp-2Ch] BYREF memset(Buffer, 0, sizeof(Buffer)); printf("Welcome The System\nPl
2022-04-15 23:38:37
2767
原创 UPack 压缩PE头文件分析(特点总结)
文章目录UPack 头文件分析(特点总结)概述压缩方法PE文件头部分的特征表现特征具体改变重叠文件头具体修改文件头(IMAGE_FILE_HEADER)中可选头(IMAGE_OPTIONAL_HEADER)的长度(E0)原理(创造空间,插入代码)原因查看插入的代码修改可选头中的NumberOfRvaAndSizeNumberOfRvaAndSize具体修改IMAGE_SECTION_HEADER的空间利用重叠节区RVA to RAW的特征IMAGE_IMPORT_DESCRIPTOR array(导入表)的
2022-04-15 00:27:07
1231
原创 攻防re2-cpp-is-awesome(c++干扰我,align 8作用)
攻防re2-cpp-is-awesome拖入ida看到一堆冗长的我看不懂的代码__int64 __fastcall main(int a1, char **a2, char **a3){ char *v3; // rbx __int64 v4; // rax __int64 v5; // rdx __int64 v6; // rax __int64 v7; // rdx __int64 v8; // rdx __int64 v10[2]; // [rsp+10h] [rb
2022-04-12 21:43:24
3102
原创 攻防notsequence(杨辉三角的判断)
攻防notsequence杨辉三角https://baike.baidu.com/item/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92/215098拖入ida 看main函数int __cdecl main(){ _DWORD *v0; // eax int v2; // [esp+14h] [ebp-Ch] _DWORD *v3; // [esp+1Ch] [ebp-4h] memset(&unk_8049BE0, 0, 0x4000u);
2022-04-12 17:55:16
2245
原创 pe文件节区的删除和增加
pe文件节区的删除和增加节区(.reloc)的删除(按照《逆核》书中的步骤来进行)整个过程需要四个步骤:1.删除节区头2.删除节区3.修改节区数(number of section)4.修改映像大小(size of image)删除节区头在hxd中找到rva从270到297区域,用0填充删除节区内容在hxd中找到poiner to raw data(磁盘中地址c000),删除其后面的所有内容修改节区数量找到文件头中的 number of section同样在hxd中修改其
2022-04-10 12:21:03
1656
原创 攻防elrond
攻防elrond分析拖入ida看main函数int __cdecl main(int a1, char **a2){ if ( a1 > 1 && sub_8048414(a2[1], 0) ) { puts("Access granted"); sub_8048538(a2[1]); } else { puts("Access denied"); } return 0;}只要让**sub_8048414(a2[1],
2022-04-09 22:24:21
2554
原创 动态调试_
动态调试练习题目来源:xctf的gametime分析流程:先运行程序,发现是一个游戏,按照要求分别按空格、x、m键,挺考验手速的最后可以玩出来flag,但是出现flag的画面一闪而过,来不及截屏所以我就录屏开玩笑,要用逆向的方法解出来才行载入od载入od中,f9到程序输出的地方,定位输出s和失败的函数,下断点重新载入程序,f7 进入函数查看,调试到这里时发现:若在该处不进行跳转则程序会跑到输出失败的函数,所以在这里将jne改为jmp重新运行(记得再修改一下,重新运行会丢失修改效果
2022-04-08 22:27:13
3192
原创 攻防crackme(手动脱壳nspack)
攻防crackme(手动脱壳nspack)放到exeinfope查壳,是nspack尝试进行手动托脱壳拖入od设硬件断点执行pushfd和pushad后,在esp的位置设置硬件断点再按f9执行到popfd后,jmp跳到的地方即为oepdump:插件中dump修复IATfixdump:修复iat(针对上次dump后的文件)最后生成一个crackme_dump_scy.exe文件,即为脱壳后的文件:拖入idaint __cdecl main(int argc, const char *
2022-04-07 22:19:00
383
原创 攻防re_crazy
攻防re_crazy拖入ida看到繁琐的代码:int __cdecl main(int argc, const char **argv, const char **envp){ __int64 v3; // rax __int64 v4; // rax __int64 v5; // rax __int64 v6; // rax __int64 v7; // rax __int64 v8; // rax __int64 v9; // rax __int64 v10; //
2022-04-05 16:17:26
1332
原创 攻防easyre-153
攻防easyre-153先拖入exeinfope查壳,发现是简单的 upx壳所以用upx.exe脱壳:upx-d脱壳之后拖入ida,f5看main函数int __cdecl main(int argc, const char **argv, const char **envp){ int pipedes[2]; // [esp+18h] [ebp-38h] BYREF __pid_t v5; // [esp+20h] [ebp-30h] int v6; // [esp+24h] [eb
2022-04-05 14:11:26
1760
原创 c与c++的一些区别
文章目录c与c++的一些区别参考面向过程和面向对象的区分:面向过程(c语言)面向对象(c++)优缺点引用链接中的例子一些具体语言方面的区别关键字不同返回值缺省参数函数重载c与c++的一些区别参考https://blog.youkuaiyun.com/cherrydreamsover/article/details/81835976在这里自己再总结一下面向过程和面向对象的区分:面向过程(c语言)从程序的开始一直到程序的结束,根据每个步骤需要做的内容进行实现,把问题的解决分给各个步骤,步骤与步骤之间具有高耦合
2022-04-04 22:10:05
630
原创 攻防re-1 100
攻防re-1 100拖入ida,main函数f5int __cdecl __noreturn main(int argc, const char **argv, const char **envp){ __pid_t v3; // eax size_t v4; // rax ssize_t v5; // rbx bool v6; // al bool bCheckPtrace; // [rsp+13h] [rbp-1BDh] ssize_t numRead; // [rsp+1
2022-04-04 22:08:40
129
原创 攻防世界easyhook
攻防世界easyhook题目流程int __cdecl main(int argc, const char **argv, const char **envp){ HANDLE FileA; // eax DWORD NumberOfBytesWritten; // [esp+4h] [ebp-24h] BYREF char Buffer[32]; // [esp+8h] [ebp-20h] BYREF printf(aPleaseInputFla); scanf("%31s",
2022-04-04 10:22:42
356
原创 攻防re_secret-galaxy-300
攻防re_secret-galaxy-300拖入ida看到int __cdecl main(int argc, const char **argv, const char **envp){ __main(); fill_starbase(&starbase); print_starbase(&starbase); return 0;}点开print那个函数看看:int __cdecl print_starbaseint a1){ int result; /
2022-04-04 10:21:26
258
原创 攻防hackme
攻防hackme字符串查找到主要函数__int64 __fastcall sub_400F8E(__int64 a1, int a2, int a3, int a4, int a5, int a6){ int v6; // edx int v7; // ecx int v8; // er8 int v9; // er9 int v10; // ecx int v11; // er8 int v12; // er9 char v14; // [rsp+0h] [rbp-C
2022-04-04 10:17:46
121
原创 常见加密算法总结-base系列部分
文章目录常见加密算法总结-base系列部分附上链接自己的总结base系列编码base64介绍字典加密原理图加密代码解密索引表解密代码base32介绍字典一字典二加密原理图解密base16介绍编码表加密原理图代码base58编码常见加密算法总结-base系列部分附上链接参考学长的:https://the_itach1.gitee.io/2021/01/18/%E4%B8%80%E4%BA%9B%E5%B8%B8%E7%94%A8%E7%AE%97%E6%B3%95/自己的总结base系列编码ba
2022-04-03 17:54:48
3344
原创 攻防 re_parallel-comparator-200
攻防 re_parallel-comparator-200是一个c语言源文件,打开看到具体代码:#include <stdlib.h>#include <stdio.h>#include <pthread.h> //linux的线程库 ,所以要在linux中才可运行#define FLAG_LEN 20void * checking(void *arg) { char *result = malloc(sizeof(char)); cha
2022-03-30 21:52:49
492
原创 一道简单的smc自解密题目
一道简单的smc自解密题目攻防RE_BABYRE64位elf,拉入ida打开main函数int __cdecl main(int argc, const char **argv, const char **envp){ char s[24]; // [rsp+0h] [rbp-20h] BYREF int v5; // [rsp+18h] [rbp-8h] int i; // [rsp+1Ch] [rbp-4h] for ( i = 0; i <= 181; ++i )
2022-03-27 12:09:17
1129
原创 攻防re_Reversing-x64Elf-100
攻防re_Reversing-x64Elf-100题目流程读取输入的字符串s,再作为参数传入 sub_4006fd 函数中判断条件成立,返回1,输入的flag不正确,**所以当 *(char *)(v3[i % 3] + 2 * (i / 3)) - (char )(i + a1) = 1 的时候成功解题思路通过对函数中判断条件的逆向分析得出以下脚本注意:*(char *)() 中后面括号里是地址之,所以写脚本的时候对应位置应改为二维数组的形式: (v3[i % 3] [2 * (i / 3
2022-03-17 20:42:27
387
原创 【无标题】
攻防re-666题目流程main函数对输入的字符串作为参数传入 encode 函数中,最后与enflag字符串比较,成功。encode函数:先判断输入的字符串是否符合长度要求(strlen(a1)== key(18)),之后进行一系列的加密。加密:就是一些异或运算解题思路将加密过程逆向,这里需要知道:a ^ b ^ = c ^ d <=> a = c ^ b ^ dc语言脚本#include <stdio.h>int main(){ int enfla
2022-03-16 23:49:58
3739
原创 python学习笔记
文章目录关于python输入**格式化输入的语法**:**查看变量的类型用**eg.猜拳游戏:运算符判断和循环for循环的三种写法:while循环:while循环题目:输出1-100之间的数字和:while循环中的else用法:其它语句:打印一个九九乘法表:字符串重复符号,转义字符的用法\:常用的转义字符:字符串的处理:字符串的截取:字符串的连接有些字符串的前面加了一个“r”,就说明该字符串里面的转义字符不进行解释字符串的常见操作:列表——python的核心数据类型列表的定义、使用:列表操作1.列表增加:【
2022-03-15 22:30:45
641
原创 攻防re--流浪者
题目大概流程(sub_401890函数) 输入一串字符存入数组,判断每个元素是否为数字、小写/大写字母,若符合,分别对其进行:-48,-87,-29的操作,并将得到的新数组(字符串)作为参数a1传递给sub_4017f0函数进行第二部分处理。(sub_4017f0函数) 定义了一个储存 “abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ”的数组Str1,在while循环中:将a1的每个元素的值作为数组Str1的下标来..
2022-03-15 22:28:37
1729
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人