逆向
文章平均质量分 57
1ens
菜菜菜菜
展开
-
D3ctf-D3MUG(u3d
第一次遇到u3d,寄!用ilcppdumper dump出dll文件选择运行Il2CppDumper.exe并依次选择il2cpp.so的可执行文件和global-metadata.dat文件dump出的dll文件在DummyDll里面。⽤dnspy查看AssemblyCSharp.dll,定位到关键函数GameManager.NoteHit然后用ida打开lib2cpp.so文件 运行我们ilcppdumper里面的ida_py3脚本。然后再点击script.json然原创 2022-03-08 01:00:27 · 4711 阅读 · 0 评论 -
JEB动态调试debug模式
首先安装adb,将adb与模拟器连接(我是用的安装的夜神模拟器,直接使用了夜神自带的adb,我的模拟器与网上常说的不一样)我的ip是。在 CMD 中输入adb shell am start -D -n 包名/入口activity名adb shell am start -D -ncom.ph0en1x.android_crackme/com.ph0en1x.android_crackme.MainActivity如图即为成功。...原创 2022-03-06 10:48:25 · 4043 阅读 · 1 评论 -
-异常处理-
简介:异常分为俩种,CPU产生的异常(除0,缺页)和软件模拟产生的异常来自《加密与解密》SEH:SEH是Windows操作系统提供的异常处理机制,在程序源代码中使用_try、__except、_finally关键字来具体实现。TEB/T:typedef struct _NT_TIB { struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; //异常的链表 PVOID StackBase;原创 2022-03-03 22:54:51 · 647 阅读 · 0 评论 -
反调试总结
目录PEB:函数检测:数据检测:PEB:利用PEB结构体信息可以判断当前进程是否处于被调试状态。其中与反调试密切相关的成员。+0x002 BeingDebugged : UChar 调试标志+0x00c Ldr : Ptr32 _PEB_LDR_DATA 进程加载模块链表+0x018 ProcessHeap : Ptr32 Void+0x068 NtGlobalFlag : Uint4B函数检测:sDebuggerPresent():函数检测就是通..原创 2022-03-03 18:50:34 · 656 阅读 · 0 评论 -
花指令记录
_asm{ call sub2 _emit 0xEB #emit就是在当前位置直接插入数据, 0xEB 对应的汇编指令是 jmp 指令 jmp label2 sub2: add dword ptr[esp],1 retnlabel2:}大概逻辑:call sub2函数 eip指向 0xeb, 后会将 eip 的值 push 入系统栈然后跳转到 sub2:[esp]也就是栈顶,栈顶的数值+1.所有reten之后直接执行jump labe12。例子:call指令和相应的函.原创 2022-03-01 23:22:04 · 374 阅读 · 0 评论 -
hardasm
AVX2指令集逆向,主要解题思路是使用idapython脚本逆向求解先把ymm0 - ymm1寄存器赋值再用 IDAPython 统计加密用到的指令:ea=0x140001081 # 起始地址opcode=set() # 利用集合自动去重while True: if ea>=0x0140007F17: break opcode.add(print_insn_mnem(ea)) ea=next_head(ea) # 到达下个指令的地址print(opcode)得到原创 2022-02-24 22:12:51 · 345 阅读 · 0 评论 -
vnctf——cm1
从main函数开始看,发现在check的时候加载了assets⽬录中的⼀个dex⽂件,跟进发现在FileUtils⾥⾯。主要逻辑在copyfile函数之中,进行异或处理,注意这里的以1024⼀组进⾏解密就可以。key=b'vn2022'f1=open(r'ooo','rb+')f2=open(r'dex','wb+')while True: t=[] s=f1.read(1024) if len(s)==0: break for i i..原创 2022-02-17 20:56:42 · 3166 阅读 · 0 评论 -
vnctf——babyvm
深入了解 vm虚拟机逆向这是一道golang vm题,64位idapro 7.7 对于go反编译进行了优化,可以直接看。分析主函数,unk_B9D8A0为我们的opcode段根据部分函数 猜测a7就是虚拟机的寄存器个数,并且为21.推测栈的大小为0x3e8struct func{ void *call; vm *ptr;};struct REG{ _DWORD R[21];};struct vm{ REG reg; _DWORD Memor原创 2022-02-17 16:43:35 · 3406 阅读 · 0 评论 -
pyc文件反编译
pyc文件结构文件格式:03f3 0d0a magic表示python的版本信息,此处03f30d0a是python2.7的标识;6206 b160 时间戳,编译的时间信息63 Blockde的开头后4字节0000 0000 :argcount参数个数后4字节0000 0000: nlocals局部变量个数后4字节1b00 0000: stacksize栈空间大小后4字节4000 0000:flags73:类型string3501 0000 字节长度(小端原创 2022-02-13 10:48:27 · 9476 阅读 · 0 评论 -
Hgame 2022 Answer‘s Windows
查壳用 QT 写的图形界面f12 搜索关键字符串找到相应的主函数sub_140001F90 就是加密函数查看发现为base64换标加密,查看表的引用:注意这里有个调试判断我们把这里的jnz改成jz达到我们想要的结果这里变成if动调,这里的v22就是新的basetable!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`...原创 2022-02-12 15:03:52 · 799 阅读 · 0 评论 -
[GWCTF 2019]babyvm
系统学习vm虚拟机逆向64位vm的题目找到主函数分析sub_CD1函数:sub_B5F代表mov操作,其中 0xE1,0xE2...代表不同的寄存器。sub_A64是一个异或操作xor。sub_AC5是一个读取操作并判断他的长度是否等于21sub_956是空操作nop。sub_A08 两个数相乘操作mulsub_8F0是一个交换操作swapsub_99c线性运算该函数是对6010A0操作码内容的执行,一直到0x...原创 2022-02-10 21:23:58 · 1451 阅读 · 0 评论 -
[HDCTF2019]MFC
放入peid查看 发现vmp的壳。什么是MFC我们用xspy分析,将放大镜对准分析的窗口。注意到有一个OnMsg有点奇怪,他并不是以宏的形式出现,应该是个作者自定义的消息。写个程序向MFC程序发送这个消息#include <stdio.h>#include <stdlib.h>#include <Windows.h> int main(){ HWND h = ::FindWindowA(NULL, "Flag...原创 2022-02-10 15:09:22 · 435 阅读 · 0 评论 -
Have a tea -(极客大挑战(SMC,fork
无壳,IDA打开64分析start函数。 smc⾃解密,通常处理smc⾃解密有两种⽅法,如果是⽐较简单的⾃解密, 我们可以直接使⽤idapython写⼀个脚本即可解决,如果碰⻅运算不太好实现的smc⾃解密,⽐如这⾥。尝试动态调试,我们要在下⽅的jmp指令处下断点jmp跳转右键analyzed 选Force 把红色代码部分P键定义成函数F5起始地址,查看到main函数,猜测后面为init函数优先查看init函数(先于main函数执行部分main函数...原创 2021-12-04 01:58:21 · 582 阅读 · 0 评论 -
wasm逆向——(极客大挑战2021wasm
WebAssembly是一种全新的Web编程语言,但是与JavaScript不同,它不是一种让你直接手动编写的语言,而是C / C ++,Rust,C#和TypeScript等不断增加的上层语言的编译目标。wasm是基于堆栈的虚拟机的二进制指令格式wabt包安装尝试了gitclone的方法,一直没安装成功,尝试:sudo apt install wabt我的环境:ubuntu20.4WABT(我们将其称为“ wabbit”)是用于WebAssembly的一套工具,包括:wa.原创 2021-11-28 20:13:31 · 7573 阅读 · 0 评论 -
IDA无法反编译 and 提示错误
情况一:有的时候IDA的函数点进去 ,发现无法去反编译,可能是代码出问题了,考察我们对汇编的阅读能力例如下面:aaa指令明显错误(注:CODE CREF代码交叉引用)我们把这里jbe和aaa nop掉然后再选中红色部分,按p键定义为函数,然后重新反编译即可...原创 2021-11-01 19:19:20 · 6215 阅读 · 0 评论 -
大端序小端序存储
做逆向好几次遇到,这次总结一下。大端:高位存放在低地址,低位存放在高地址。数据字节位随着内存地址的增长而减小。正常的存储模式小端。高位存放在高地址,低位存放在低地址。数据字节位随着内存地址的增长而增长。将数字逆序存储。字符串数字等在内存中是反向存放的,如果用地址来取的话要反向,如果用数组下标来取的话才是正向。在做题的时候,如果碰到字符串我们需要手动去是反转一下字符的位置转字符的。数组,并不会受到字节序的影响。它的排序无论大端序还是小端序都是一样的。...原创 2021-10-31 21:01:44 · 429 阅读 · 0 评论 -
CTF-Python打包成的exe文件Re逆向
一 ,python打包成的python文件通常的图标都是python模样如图二,打包成的文件需要先解压找到pyc目录。解压用到的工具pyinstxtractor.py,在Github上有直接下载就欧克。使用方法:将exe文件放在同一个包下,在文件路径下打开cmd,运行python pyinstxtractor.py <待解包文件名>生成一个<待解包文件名>_extracted文件夹即为成功三,寻找相应的pyc文件一般会生成多个多个pyc文件,我们需要...原创 2021-10-20 20:44:16 · 3088 阅读 · 0 评论 -
CTF C#逆向Reverse
记录一下遇到的新题型将得到的文件放入 Exenifo中发现有点奇怪 试试放入IDA连F5都没有用,再回到Exenifo中查看,发现比较两个特殊的地方 C# .NET猜测这个是C#反汇编搜索发现 C#反汇编 使用 dnspy来查看代码虽然之前没有接触过C#,凭借着C++和C的基础还是能看懂,下面就是写脚本破解#include<iostream> using namespace std;int ppp(int a,int b,int c){ int ..原创 2021-10-03 15:30:04 · 636 阅读 · 0 评论