逆向
九层台
这个作者很懒,什么都没留下…
展开
-
angr使用[3]--使用技巧
0x08对探索结果添加限制#跳过一些函数来求解import angrimport claripyimport sysimport binasciidef main(argv): path_to_binary = "08_angr_constraints" project = angr.Project(path_to_binary) start_address = 0x...原创 2020-01-04 09:25:51 · 1412 阅读 · 0 评论 -
骇极杯[what's it]
__main(); v8 = 0; v9 = 0; v10 = 0; memset(v6, 0, sizeof(v6)); v7 = 0; v5 = 0; v4 = 0; v15 = 0; v14 = 0; printf("Please input your luck string:"); scanf("%s", &v8); if ( str...原创 2018-11-28 19:11:58 · 218 阅读 · 0 评论 -
2018骇极杯[cyvm]
ida加载一个switch case。套用大佬的一句话“while循环套switch,不是迷宫就是vm”这里是vm,第一次做vm的题目。简单说一下vm是什么。vm其实就是自己定义了一下程序的机器码,比如这里用0x01来表示mov这两个参数,然后用数组来模拟寄存器,栈。在这个题里面vm的数据段和代码放到了一起。简单跟了一下ennnn有点不太好懂,贴出官方的步骤最后一位是原来的值,...原创 2018-11-28 17:32:43 · 455 阅读 · 0 评论 -
复写IAT劫持程序执行流(计算器中显示中文数字)
结果:在计算器窗口中把本来应该显示的数字替换为中文须知:计算器显示数据的时候需要调用user32.dll里面的SetWindowText() API过程:在程序运行的时候会加载user32.dll到内存,这个时候会把IAT里面写入成函数的真正地址(具体见文章中图),这里自己写一个dll当dll被加载会修改user32.dll!SetWindowTextW对应的IAT值达到劫持程序执行流的目的。...原创 2018-11-08 22:01:22 · 687 阅读 · 0 评论 -
调试方式勾取API WriteFile函数实现大小写转化(逆向工程核心原理 记事本WriteFile api勾取)
调试方式:场景是调试本地程序,用调试方式可以对被调用进程的完全访问。基本原理:在记事本调用WriteFile之前设置断点(0xcc也就是int 3)引发调试异常(EXCEPTION_BACKPOIT事件)修改掉应该传入的参数(要保存数据的内容和大小)再恢复程序原本的状态。main函数#include"windows.h"#include"stdio.h&amp原创 2018-11-06 22:42:19 · 670 阅读 · 2 评论 -
代码注入进程代码实现
#include"windows.h"#include"tchar.h"typedef struct _THREAD_PARAM{ FARPROC pFunc[2]; //LoadLibraryA(),GetProcessAddress()}THREAD_PARAM,*PTHREAD_PARAM;BYTE g_InjectionCode[] ={};BOOL InjectCo...原创 2018-11-06 16:49:21 · 1177 阅读 · 0 评论 -
修改PE文件注入dll
修改思路PE文件中导入dll信息以结构体列表形式存储在IDT中。只要将myhack.dll添加到列表尾部即可。IDT结构IDT的描述在IMAGE_OPTION_HEADER里面的IMPORT Table,通过size可以确定是否有足够的空间让我们添加IDT是由IMAGE_IMPORT_DESCRIPTION(简称IID)结构体组成的数组,数组末尾以NULL结构体结束。每个IID结构体为0...原创 2018-10-09 14:15:05 · 4450 阅读 · 0 评论 -
dll的注入与卸载
使用方法:需要三个命令行参数1.flag 0表示注入,1表示卸载(注意卸载需要管理员权限)2.dll的路径(名字) 注入需要路径和名字,卸载需要名字就够了3.需要注入或卸载的进程名字 这里添加了改进,只需要输入进程名字程序会查找PID。#include"windows.h"#include"tlhelp32.h"#include<tchar.h>DWORD...原创 2018-10-04 18:38:56 · 6659 阅读 · 0 评论 -
windows简单消息勾取和dll注入
来源《逆向工程核心原理》运行notepad.exe可以劫持notepad.exe的键盘输入HookMain.cpp//HookMain.cpp#include"stdio.h"#include"conio.h"#include"windows.h"#define DEF_DLL_NAME "HookKey.dll"#define DEF_HOOKS原创 2018-10-03 22:05:39 · 864 阅读 · 0 评论 -
Jarvis OJ(CrackMe2和)
0x01CrackMe2用c#写的程序程序加了混淆用dnspy动态调试。运行起来,程序断在这里然后几次跳出之后发现这里进行了验证对text进行加密,放入text2比较。text2跟一个函数的运行结果比较。函数的运行结果很容易跟出来。主要过程是求得到text2的加密算法public static string \u202B\u202E\u200F\u200B\u202D\...原创 2018-09-25 13:52:35 · 767 阅读 · 0 评论 -
2018/4/13实验室考核
编程题I live2 in an ordinary family, but my parents3 give me all their love4, especially my mom. She takes care of me all the time and sometimes33 I think she2 is a little overprotective. I have alread...原创 2018-04-13 19:31:26 · 599 阅读 · 0 评论 -
Jarvis OJ FindKey题解
下载下来是没有后缀名的文件,用斯托夫文件分析器查一下的出结果是pyo文件直接把后缀名改成了.pyc它就能运行。接下来就是反编译pyo文件了。 安装uncompylepip install uncompyle可以写上pip的绝对路径。C:\Users\liu>pip install uncompyleCollecting uncompyle Downloading un...原创 2018-04-05 10:18:08 · 5408 阅读 · 0 评论 -
bugku之maze
找到这里: 用od找到这些地址修改跳转后会生成一个二维码,不过发现这二维码不能得到有用的信息。 分析check函数: 是从输入里面取出了奇数位作为第一个判断,偶数位作为第二个判断 奇数位转化为0,2,3,4是有意义的1直接舍弃了。 偶数位是转化成了0到9(5表示0,6表示1……….) a1用来计数(输入的5走0次,6走一次….) if ( i / 26 >...原创 2018-03-21 20:56:29 · 334 阅读 · 0 评论 -
MCTF 第一期winwin
取反还有ctf的套路原创 2017-11-27 18:35:53 · 708 阅读 · 3 评论 -
MCTF 被IDA支配的恐惧
ida的新用途原创 2017-11-29 19:36:08 · 316 阅读 · 0 评论 -
ida算法解析
int sub_401130(){ char v1; // [sp+0h] [bp-10h]@1 sub_402702("Do you know flag?\n"); ((void (__thiscall *)(char *))loc_4010A0)(&v1); if ( !sub_401000((int)&v1) ) { sub_402702("wrong~");原创 2017-10-12 19:41:37 · 2887 阅读 · 2 评论 -
破解算法
很简单的一个程序:int __cdecl main(int argc, const char **argv, const char **envp){ int result; // eax@2 char s; // [sp+10h] [bp-30h]@1 int v5; // [sp+38h] [bp-8h]@3 int v6; // [sp+3Ch] [bp-4h]@1 prin原创 2017-10-12 18:43:35 · 1103 阅读 · 2 评论