自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 [羊城杯 2020]login + pyinstaller细节解包

题目:[羊城杯 2020]loginpyinstaller打包后的64位程序。一、pyinstaller解包【参考看雪论坛的发帖】(一).exe——>.pyc方法1:PyInstaller Extractor用PyInstaller Extractor解包把pyinstxtractor.py和attachment.exe文件放在同个目录下打开cmd,进入该目录,输入:python pyinstxtractor.py attachment.exe这里有个值得注意的地方就是执行这个

2021-04-29 17:57:47 1346 2

原创 [UTCTF2020]babymips

题目:[UTCTF2020]babymipsIDA32中查看伪代码int __cdecl main(int argc, const char **argv, const char **envp){ int v3; // $v0 char v5[24]; // [sp+18h] [+18h] BYREF char v6[24]; // [sp+30h] [+30h] BYREF char v7[84]; // [sp+48h] [+48h] BYREF std::__cxx11:

2021-04-29 12:32:52 533 1

原创 [HDCTF2019]MFC

题目:[HDCTF2019]MFC是个MFC写的VMProtect保护的32位程序。打开分析MFC事件处理函数的工具xspy,同时打开待分析的mfc程序,放大镜拖至待分析程序的窗口。下图我们可以注意到有一个消息并不是以宏的形式出现,应该是个作者自定义的消息,难怪怎么点击啥的都无法触发。写个程序向MFC程序发送这个消息即可。用FindWindow函数获取窗口句柄。SendMessage函数发送消息。#include<Windows.h>#include<stdio.h

2021-04-28 22:35:41 745 2

原创 [2019红帽杯]Snake

题目:[2019红帽杯]Snake0x01 分析程序是个unity游戏。把Snake\Snake_Data\Managed目录下的Assembly-CSharp.dll放到dnSpy里面反汇编看看,发现了导入外部interface动态链接库,且GameObject主函数就在这个库中。现在来看看这个函数是如何被使用的,选中GameObject函数,右键点击分析,弹出的分析器中双击可以看出向这个函数传入了一个坐标参数。找到Plugins下的Interface64位ida64查看,在str

2021-04-28 18:47:15 480

原创 【C语言】typedef关键字

typedef是C语言用来为一个声明起别名的关键字。typedef的难点就在于为函数起别名,这篇文章着重讲解typedef如何为复杂函数声明起别名以及它与#define最显著的区别。复杂函数声明下面通过几个案例看懂一些常用的复杂函数声明。1. void (* f[10]) (void (*)());首先,明确一点,第一个括号这个整体可以理解为函数名(函数所在的地址)。其次,由于 [] 的优先级高于 * 的优先级,所以第一个括号里表明 f 数组的第11个元素中存放指向这个函数地址的指针。..

2021-04-28 18:46:46 349

原创 【DLL动态链接库】解决自己编写的程序在别人的电脑上无法运行的问题

记录配置过程原因vs编译器默认是动态编译,我们需要配置成静态编译。动态编译:在程序编译时dll不被连接到目标代码中,而是在程序运行是才被载入。静态编译:在程序编译时dll会被连接到目标代码中,程序运行时将不再需要该静态库。方法以VS2017为例,点击debug(“调试”)——> Properties(解决方案的“属性”)属性页面下选择Code Generate【“代码生成”】——>Runtime Library【“运行库”】下的Multi-threaded Debug(/.

2021-04-28 15:30:10 1702

原创 IDA头文件摘录

本文取自IDA7.5安装目录下plugins文件夹中的defs.h头文件,摘录了ida反汇编的宏以方便日后查找使用。/* This file contains definitions used in the Hex-Rays decompiler output. It has type definitions and convenience macros to make the output more readable. Copyright (c) 2007-2020 He.

2021-04-27 21:26:33 1212

原创 AES加密解密(C语言实现)

这几天在做学校的密码学报告,贴一下源代码。。。测试明文:0x32,0x43,0xf6,0xa8,0x88,0x5a,0x30,0x8d,0x31,0x31,0x98,0xa2,0xe0,0x37,0x07,0x34 测试密钥:0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c 原创源码#define _CRT_SECURE_NO_WARNINGS#include<stdio.

2021-04-27 17:47:59 6438 11

原创 SHA-1算法(C语言实现)

测试明文:iscbupthash:664DC9F017DC1AEE4A4366BCFB8511AFC89F9430#include<stdio.h>/*定义用到的常量*/unsigned int A = 0x67452301, B = 0xEFCDAB89, C = 0x98BADCFE, D = 0x10325476, E = 0xC3D2E1F0; //第一次迭代的链接变量unsigned int K[4] = { 0x5A827999, 0x6ED9EBA1, .

2021-04-27 15:44:32 1646 3

原创 UPX手动脱壳

脱壳入门,不喜勿喷,欢迎指正。参考《加密与解密(第四版)》0x01 壳&脱壳首先了解一下什么是壳,壳实质上是一个子程序,它在程序运行时首先取得控制权并对程序进行压缩。同时隐藏程序真正的OEP。而脱壳的过程总体分为三个步骤:查找真正的程序入口点抓取内存镜像文件重建PE文件关于壳的类型有以下几种:解压->运行解压->运行->解压.->运行解压 decoder|encoded code->decode ->excRun th.

2021-04-23 14:04:27 1755

原创 [CISCN2018]2ex

题目:[CISCN2018]2ex32位无壳,gcc编译,MIPS从这个函数看出是变态base64码表。int __fastcall sub_400430(int a1, unsigned int a2, int a3){unsigned int v3; // $v0int v4; // $v0int v5; // $v0int v6; // $v0unsigned int i; // [sp+8h] [+8h]unsigned int v9; // [sp+8h] [+8h]int

2021-04-22 21:21:17 617

原创 [ACTF新生赛2020]Splendid_MineCraft

题目:[ACTF新生赛2020]Splendid_MineCraft32位无壳程序初步静态分析老样子,ida32进去看主函数。有提示输入错误的字串,但没有提示输入正确的字串。瞄了一眼流程图(发现有个突出的独立分支),引起了我的怀疑。红框部分的细节如下:原来那个提示正确的字串在这个独立分支上,光标放在红框,再按tab看伪代码,发现显示在主函数的这个区域。在这个区域我们又找到意想不到的收获。推测是smc没错了。接下来具体分析主函数:strtok函数:函数原型:char *

2021-04-22 20:37:22 836

原创 [watevrCTF 2019]Timeout

题目:[watevrCTF 2019]Timeout64位无壳.com文件?拖到ida64看看反汇编不出来。但拖入ida64时显示了elf,去掉后缀改成elf应该就可以正常显示汇编代码了。查看main函数代码如下:int __cdecl main(int argc, const char **argv, const char **envp){ signal(14, sig); alarm(1u); delay(6000000LL); can_continue = 1337

2021-04-22 11:49:58 619

原创 [WMCTF2020]easy_re

题目:[WMCTF2020]easy_re64位无壳程序。先在ida64里打开,发现找不到“please input the flag:”字符串,别的提示字符串也找不到,再看文件名perl,选择网上搜索这个名词,但只了解到perl是个脚本语言,推测是在程序运行过程中这些字符串才会显现出来,我目前所见过的能实现这样操作的也就SMC,但这题应该不是,可能是新的反静态分析的技术。本能想到用X64dbg动态调试。一键F9看它跑到哪里。它停在了entrypoint处,看不出什么。为了找到那个字符串但

2021-04-22 11:19:07 751

原创 [羊城杯 2020]Bytecode

题目:[羊城杯 2020]Bytecode拿到手竟然是个txt文件,打开后发现里面是python的字节码查文档反编译出来的python脚本如下:en = [3,37,72,9,6,132]output = [101,96,23,68,112,42,107,62,96,53,176,179,98,53,67,29,41,120,60,106,51,101,178,189,101,48]flag = raw_input('please input your flag:')str = flaga

2021-04-21 21:15:59 601 1

原创 [SCTF2019]Who is he

题目:[SCTF2019]Who is he解压之后发现是unity,但这不是最主要的,主要是。。。预感到最后的flag肯定很有意思,以至于差点忘记了自己相对不擅长unity逆向这个事实。我们进入正题:正题第一步当然是Reflector查看Assembly-CSharp.dll动态链接库文件。我们现在定位加密函数的位置,查找一下字符串“Emmmm”双击进入public class TestClick : MonoBehaviour{ // Fields private

2021-04-21 20:13:26 657 2

原创 [羊城杯 2020]easyre

题目:[羊城杯 2020]easyre64位无壳程序ida64打开查看伪代码:int __cdecl main(int argc, const char **argv, const char **envp){ int v3; // eax int v4; // eax int v5; // eax int result; // eax char Str[48]; // [rsp+20h] [rbp-60h] BYREF char Str1[64]; // [rsp+50h]

2021-04-21 15:45:26 982

原创 [FlareOn2]very_success

题目来源:[FlareOn2]very_success确定是32位无壳程序放入静态分析工具ida32里查看:发现栈指针不平衡,"alt + k"手动调节一下,加个负号即可:调节好之后查看伪代码:BOOL __usercall sub_401000@<eax>(int a1@<ebp>){ BOOL result; // eax HANDLE v2; // [esp-14h] [ebp-14h] HANDLE v3; // [esp-10h] [ebp-1

2021-04-21 14:22:34 902 2

原创 [MRCTF2020]EasyCpp

题目:[MRCTF2020]EasyCpp这题是一个用g++编译的C++逆向题,第一次碰到这种类型,边做边学习吧。因为是初次接触C++逆向,如有不足,欢迎评论区指正。一、mainIDA64查看main函数的伪代码如下,各个反汇编后伪代码的注释也已经给出,仅供参考:int __cdecl main(int argc, const char **argv, const char **envp){ __int64 v3; // rax __int64 v4; // rbx __int6

2021-04-20 21:25:05 835 2

原创 C++逆向入门——vector与vector逆向

接下来我们将比对C++(vector)代码与把该代码编译出的程序反编译后的ida伪代码。下面每一个标题下的第一个代码片为C++代码,第二个为ida对应伪代码。一、vector声明的C++实现与ida伪代码#include <iostream>#include <vector>using namespace std;1.声明一个向量 //声明一个int型向量 vector<int> test1; getchar(); //创建一.

2021-04-19 21:22:02 1340

原创 VMware15搭建OpenWRT

这里分享一下需要用到的vmdx文件(openwrt的硬盘文件),提取码:1234,下载好之后找个空的文件夹作为openwrt的系统文件夹放进去 我们打开VMware15,按住"ctrl + N"或者“文件”—>“新建虚拟机”创建一个虚拟机。弹出如下窗口,选择自定义,再选择下一步。硬件兼容性一定要确保选择Workstation 15.x,再点下一步。我们选择“稍后安装操作系统”再点击下一步由于OpenWRT属于嵌入式linux系统,所以一定要选择“linux”,而且版本是“其他lin

2021-04-18 00:10:46 740 3

原创 [2019红帽杯]childRE

小白一枚,膜拜大佬,欢迎指正总结二叉树实现输入字符串的置换。C++函数名修饰。MD5加密IDA动态调试求outstring得出outstring=‘private: char * __thiscall R0Pxx::My_Aut0_PWN(unsigned char *)’贴上我的exp:a=list('(_@4620!08!6_0*0442!@186%%0@3=66!!974*3234=&0^3&1@=&0908!6_0*&')b=list('55.

2021-04-17 18:33:05 237

原创 [GUET-CTF2019]encrypt

小白一枚,膜拜大佬,欢迎指正exeinfope看一下,是64位无壳程序导入ida64分析,贴上主函数伪代码:__int64 __fastcall main(int a1, char **a2, char **a3){ unsigned int v3; // eax unsigned int v4; // eax char v6[4]; // [rsp+4h] [rbp-93Ch] BYREF int i; // [rsp+8h] [rbp-938h] int v8; // .

2021-04-17 18:06:37 1292 1

原创 IDA远程动态调试(linux & Windows)

本篇文章参考 “逆向界圣经”《加密与解密》(第四版)ida作为强大的静态分析工具其实也兼具动态分析功能,我们下面给出教程。首先明确,我们要把我们的物理机作为调试器客户端,在其上运行的虚拟机作为目标文件的运行环境。其次我们还需要在虚拟机里面运行相应的调试服务器组件(处理所有底层执行和调试操作),调试服务器组件可以在ida安装目录下的dbgsrv文件中找到,不同系统需要选择不同的组件传到虚拟机中。接下来给出服务器组件接受的命令行参数:“-p端口”:用于设置备用TCP端口,以便服务器进行监听。默.

2021-04-17 14:47:52 6760 2

原创 [RoarCTF2019]polyre

一、难点:• 控制流平坦化; 【相关资料请参考[利用符号执行去除控制流平坦化](https://security.tencent.com/index.php/blog/msg/112)】• 用idapython去除虚假控制流程;• CRC算法;二、具体步骤:1.控制流去平坦化:装好angr,使用脚本deflat.py去除控制流平坦化,deflat.py所在目录下打开cmd命令行输入python deflat.py attachment.exe 0x400620 #python版本 +

2021-04-17 00:10:23 630 2

原创 [SCTF2019]babyre

exeinfope打开发现是64位无壳程序ida64打开,搜索关键字符串进入目标字符串的汇编窗口我们发现无法F5,发现了几处反ida调试,总结有两种类别:下面是第一种,我们直接把jb和jnb这两行改成nop。下面是第二种,所有都改完之后,从main开头到retn选中按p申明成一个新函数,就可以F5了反汇编代码如下:__int64 __fastcall main(int a1, char **a2, char **a3){ __int64 result; // rax uns

2021-04-16 23:31:16 1447

原创 字节码整理

2021-04-15 18:28:58 153

原创 [网鼎杯 2020 青龙组]bang

拿到手是一个APK文件,模拟器里打开看一下:接下来是查壳,apk查壳我们用PKID(点此下载,密码: wefd)PKID使用方法:安装目录下输入 javaw -jar APKScan-PKID.jar显示是梆梆加壳,接下来我们用frida脚本脱壳,使用该脚本前需要配置frida环境,参考我另一篇博文,集各家之长,亲测有效在frida_dexdump目录下cmd输入python main.py之后我们发现frida_dexdump新建了子文件夹com.example.how_debug

2021-04-15 16:30:03 761

原创 win10 + MuMu 安装与配置frida环境

这些天做到一个apk梆梆加壳的CTF题,那道题脱壳需要配置frida环境,在这里顺便记录一下整个配置过程。Frida是一款轻量级HOOK框架,适用于多平台上,例如android、windows、ios等。frida的服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行在系统机器上。第一步,我们先pip安装frida模块。cmd输入pip install frida(配置了多个python版本环境的可以使用命令python -m pip install frida防止用pi

2021-04-15 15:35:38 1974

原创 [SCTF2019]creakme

这题用到的知识点很多,我们先一步步分析。首先看主函数:int __cdecl main(int argc, const char **argv, const char **envp){ HMODULE v3; // eax int v4; // eax _DWORD *v5; // eax unsigned int v6; // edx _DWORD *v7; // ecx unsigned int v8; // ebx char *v9; // edi unsigne

2021-04-14 22:29:47 889

原创 [160CRACKME]BytePtr‘s Crypto kgme & Crudd‘s Crack Head

CM-1在ollydbg中打开,打算先从字符串入手,查找看有无提示输入正确的字符串,发现不能精准定位。显然这个GetWindowTextA引人注目,附msdn文档双击进入可以定位调用该函数的位置,如下:可以得到的有用信息首先是文本框内最大可输入40个字符串,字符串存入偏移地址为4033C4的内存单元中,同时我们可以意外发现找到了关于输入正确的提示,它通过调用MessageBoxA函数(弹出对话框)显示给用户。我们不难看出此函数的执行与否取决于“cmp eax,esi”指令,通过它改变标志寄存器

2021-04-14 09:53:42 421

原创 [QCTF2018]Xman-babymips

exeinfope打开,为32位程序。ida32打开后发现是MIPS指令集。Ida7.5(ida7.0需要额外加插件)直接F5一键反编译。如下:双击查看fdata,这里是判断输入格式的,重点还是看sub_4007F0函数。直接双击进入sub_4007F0(v5)函数,加密过程很容易就能看出是循环移位操作:查看关键字符串Off_410D04如下:接下来就可以写exp了,注意要防止移位过程中的溢出:a=[0x52,0xfd,0x16,0xa4,0x89,0xbd,0x92,0x80,0x

2021-04-13 22:19:26 717

原创 维吉尼亚密码、Hill密码和仿射密码的加解密及字母出现的频率统计(python实现)

维吉尼亚密码加密解密、Hill密码加密解密、仿射密码加密解密及字母出现的频率统计import stringprint('------------------------------------Vigenere加解密--------------------------------------------------------------------------------------------------------------------------------------------------

2021-04-05 19:48:17 720 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除