合集-从0.1开始的逆向学习笔记

摘要:random模块伪随机数: 所谓伪随机数指当给random设置种子后,里面的生成的随机数序列是固定的,可以被预测的。 不同系统和语言给定相同的种子,random内容不会相同 例题:[SWPUCTF 2021 新生赛]fakerandom: import random flag = 'xxxxxxxx 阅读全文
posted @ 2025-03-21 10:01 漫宿骄盛 阅读(161) 评论(0) 推荐(0)
摘要:Pylnstaller原理及解包: 原理: PyInstaller是一种流行的工具,它允许开发人员将Python脚本打包成EXE文件,从而可以在没有Python解释器的情况下运行。 PyInstaller 读取你编写的 Python 脚本。它分析你的代码,找到脚本执行所需的其他模块和库。然后搜集所有 阅读全文
posted @ 2025-03-21 10:03 漫宿骄盛 阅读(174) 评论(0) 推荐(0)
摘要:介绍: PyC是Python字节码的缩写,它是Python解释器执行Python代码的核心。当Python代码被运行时,它会首先被解释器转换为PyC字节码,然后由CPython解释器执行。 反编译: pycdc: 优点:准确性高 缺点:格式不太好,使用不方便 使用方法:在命令栏里输入pycdc 文件 阅读全文
posted @ 2025-03-21 10:23 漫宿骄盛 阅读(223) 评论(0) 推荐(0)
摘要:Int(name, ctx=None),创建一个整数变量,name是名字 Ints (names, ctx=None),创建多个整数变量,names是空格分隔名字 IntVal (val, ctx=None),创建一个整数常量,有初始值,没名字。 对于实数类型的API与整数类型一致,向量(BitVe 阅读全文
posted @ 2025-03-21 10:14 漫宿骄盛 阅读(530) 评论(0) 推荐(0)
摘要:一.介绍 1.当代码执行到某行时,获取寄存器值和内存里的值,进行调试分析,例如hook明文包. 2.当代码执行到某行时,插入想执行的代码.例如迅雷拦截发包函数. 3.当代码执行到某行时,修改寄存器,达到某些篡改目的. 拿FishingKit这道题举例就是本来运行流程是: a >b 而使用了Hook就 阅读全文
posted @ 2025-03-21 10:18 漫宿骄盛 阅读(178) 评论(0) 推荐(0)
摘要:参考资料: https://blog.csdn.net/boildoctor/article/details/121181152 https://www.52pojie.cn/thread-1451831-1-1.html 1.介绍 堆栈平衡指在函数调用过程中,通过调整堆栈指针(ESP)或基址指针( 阅读全文
posted @ 2025-03-21 10:19 漫宿骄盛 阅读(209) 评论(0) 推荐(0)
摘要:参考资料: https://mp.weixin.qq.com/s?__biz=Mzg4NzcxOTI0OQ==&mid=2247484677&idx=1&sn=33b57614d01cbbb4d67900e31cef8fe7&chksm=ce884f8e2c52125e82ba33ecbec3c51 阅读全文
posted @ 2025-03-21 10:21 漫宿骄盛 阅读(305) 评论(0) 推荐(0)
摘要:1.字节序: 字节序指数据在内存中储存的方式,决定了数据在内存中的排序位置 2.大端序与小端序 大端序: 定义:高位字节存在低地址,低位字节存在高地址。 示例:0x12345678 在内存中的存储顺序为:0x12(低地址)→ 0x34 → 0x56 → 0x78(高地址 特点:符合人类从左到右的阅读 阅读全文
posted @ 2025-03-21 10:24 漫宿骄盛 阅读(160) 评论(0) 推荐(0)
摘要:加壳: 先写一个简单的代码: 生成text.exe文件,然后把这个文件放到与upx同一个文件夹里: 输入指令./upx text.exe 即可加壳 使用IDA打开,可以明显发现被upx加壳了,其大小也由原来的55kb压缩到42KB: 去壳: 工具去壳: 使用指令./upx -d text.exe即可 阅读全文
posted @ 2025-03-21 10:37 漫宿骄盛 阅读(1414) 评论(0) 推荐(0)
摘要:这个后面应该会增加,目前只记录遇到的 1.改特征的UPX 先看看正常的UPX: 会发现里面有UPX0,UPX1等特别的字符,将其修改,就不能直接用UPX脱壳了 我把他们都改成6666 自动脱壳就会报错: 拖进die看看 可以看到他不仅能识别到是UPX壳,还能识别出来可能修改的地方 将其修改回来: 就 阅读全文
posted @ 2025-03-21 10:42 漫宿骄盛 阅读(1908) 评论(0) 推荐(0)
摘要:RC4算法: RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密钥 基本原理: 生成一个密钥流,然后与密文进行异或。 大致过程: 生成密钥流: 先利用Key生成S盒——The key-scheduling algorithm (KSA) 再利用S盒 阅读全文
posted @ 2025-03-21 10:43 漫宿骄盛 阅读(230) 评论(0) 推荐(0)
摘要:TEA算法使用64位的明文分组和128位的密钥,它使用Feistel分组加密框架,需要进行 64 轮迭代,尽管作者认为 32 轮已经足够了。该算法使用了一个神秘常数δ作为倍数,它来源于黄金比率,以保证每一轮加密都不相同。但δ的精确值似乎并不重要,这里 TEA 把它定义为 δ=「(√5 - 1)231 阅读全文
posted @ 2025-03-21 10:49 漫宿骄盛 阅读(129) 评论(0) 推荐(0)
摘要:广度优先搜索(BFS)走迷宫: 广度优先搜索(BFS)是一种经典的图遍历算法,在解决路径查找、迷宫问题、拓扑排序等问题 前置知识:队列: 队列与栈类似,但是先进先出,而不是栈的先进后出。 原理: 相当于爆破,将所有的位置都走一遍 通用迷宫代码实现: #include <iostream> #incl 阅读全文
posted @ 2025-03-21 10:53 漫宿骄盛 阅读(267) 评论(0) 推荐(0)
摘要:资料来源: https://www.cnblogs.com/goloving/p/14023881.html 一:编译目的 代码编译的目的是将源代码转换成机器能看懂的东西,从而运行代码。 机器能看懂的东西在不同环境下是不一样的。 这个机器能看懂的东西称为目标代码。 如果源代码在操作系统上运行:目标代 阅读全文
posted @ 2025-03-21 10:57 漫宿骄盛 阅读(109) 评论(0) 推荐(0)
摘要:AST抽象语法树及如何转JS代码: 资料来源: https://www.cnblogs.com/goloving/p/14078228.html 抽象语法树(Abstract Syntax Tree)也称为AST语法树,指的是源代码语法所对应的树状结构。也就是说,对于一种具体编程语言下的源代码,通过 阅读全文
posted @ 2025-03-21 10:58 漫宿骄盛 阅读(205) 评论(0) 推荐(0)
摘要:1.快捷键 参考资料:https://www.cnblogs.com/lsgxeva/p/18629167 ida动调快捷键 作用 F7 单步步进 F8 单步步过 F9 继续运行程序 F4 运行到光标所在行 Ctrl + F7 直到该函数返回时才停止 Ctrl + F2 终止一个正在运行的进程 F2 阅读全文
posted @ 2025-03-21 11:01 漫宿骄盛 阅读(312) 评论(0) 推荐(1)
摘要:一.介绍: 一种技术使得静态的代码被加密,阻碍静态分析,而一旦运行则会变为正常的代码。 这不就是壳吗? 不过在CTF中,一般只对局部加密,而且一般伴随着SMC出现的还有VirtualProtectVirtualProtect 是 Windows 操作系统中的一个 API 函数,它允许应用程序改变一个 阅读全文
posted @ 2025-03-21 11:05 漫宿骄盛 阅读(110) 评论(0) 推荐(0)
摘要:偶遇C#逆向题,IDA拼尽全力无法战胜,只给我一团乱码。 这时可以使用dnSpy来反编译: https://github.com/dnSpy/dnSpy/releases/tag/v6.1.8 1.dnSpy使用方法: 将你要反编译的程序的整个文件夹拖到那里,似乎只有.dll那里才能看到源码, 例题 阅读全文
posted @ 2025-03-21 11:06 漫宿骄盛 阅读(84) 评论(0) 推荐(0)
摘要:一,介绍: 异常机制是一种专门用于处理错误和特殊情况的机制,可以在程序运行时中断当前的控制流,并跳转到一个可以处理该错误的代码块。这种机制使得程序能够优雅地应对各种错误,而不是像C语言那样依赖返回错误码或直接终止程序。 二,流程: 图像示例: 反正我是这么理解的。 这个过程中会改变运行的控制权,运行 阅读全文
posted @ 2025-03-21 15:16 漫宿骄盛 阅读(65) 评论(0) 推荐(0)
摘要:做题时遇到了,简单记录一下 一,介绍: shellcode分为广义和狭义,狭义指的仅仅是通过命令行shell攻击靶机,并取得控制权的代码,广义的指能完成类似任务的代码,通常是汇编/机器码。 不过这里是RE,不是PWN,所以不会有靶机,那么在下文指的是广义的shellcode,注入程序,控制程序的代码 阅读全文
posted @ 2025-03-22 23:42 漫宿骄盛 阅读(156) 评论(0) 推荐(0)
摘要:一,介绍 VBS是一种Windows脚本语言,全称是Microsoft Visual Basic Script Editon(微软公司可视化BASIC脚本版)。 二,做法: 一般.vbs结尾都是文本文件,用vscode或者txt就能直接查看源码 这是例题,可以看到里面所有的chr都是各种运算得到的结 阅读全文
posted @ 2025-04-04 16:32 漫宿骄盛 阅读(279) 评论(0) 推荐(0)
摘要:一,介绍 反射修改是一种在运行时改变类的属性和方法的机制,java,go,c#等等语言都有这样的机制,这里就不详细说明是怎么实现的,毕竟相关资料很多,这里主要记录一下我遇到过的反射修改的特征,让人能遇到时知道这是什么。 二,特征 1,会导入import java.lang.reflect.Field 阅读全文
posted @ 2025-04-06 10:45 漫宿骄盛 阅读(74) 评论(0) 推荐(0)
摘要:一,介绍 BC文件是LLVM编译器编译过程引入的中间代码,既不是源代码也不是机器码,而是处于两者之间。 既然是中间代码,那我们继续将他编译,就能得到可执行的机器码,对于机器码,就可以用IDA等工具反汇编成高级语言来逆向。 二,编译 可以使用clang直接编译成可执行文件 指令为:clang xx.b 阅读全文
posted @ 2025-04-06 17:23 漫宿骄盛 阅读(207) 评论(0) 推荐(0)
摘要:一,介绍 Unity是一种游戏引擎,主要由C#编写 二,方法 我目前也就遇到一种,等后面遇到更多了再补充 1.C# 对于一般的文件结构,都会有一个后缀为_Data的文件夹,并且里面有一个名为Managed的文件夹,而那个文件夹里的Assembly-CSharp.dll文件正是我们需要的东西,里面包含 阅读全文
posted @ 2025-04-14 12:27 漫宿骄盛 阅读(446) 评论(0) 推荐(0)
摘要:一,介绍 PE文件(Portable Executable file),是一种可执行文件格式,满足此格式的文件都可以在Windows操作系统运行。在Linux系统运行的文件是ELF。 二,结构 PE文件分为头和节 1.头 头在我理解看来就是一些配置参数和签名,分为DOS头和NT头。 DOS头: 分为 阅读全文
posted @ 2025-04-15 11:52 漫宿骄盛 阅读(98) 评论(0) 推荐(0)
摘要:1.PKCS7Padding 是给16字节数据填充的如果字节数不足那就在结尾补上(字节数-数据字节数) 个 (字节数-数据字节数)字节 比如: 我的原始数据是: 01 02 03 04 05 06 07 08 09 10 只有十个字节,我距离16个字节还差6个字节,那就在结尾补上6个06 填充后的数 阅读全文
posted @ 2025-04-15 13:17 漫宿骄盛 阅读(513) 评论(0) 推荐(0)
摘要:不知道你有没有像我一样,被加密的数据找到了,加密算法也找到了,却发现写不出逆向代码,特别是ai也写不来的时候,只得无奈跳过 阅读全文
posted @ 2025-04-16 15:22 漫宿骄盛 阅读(90) 评论(0) 推荐(0)
摘要:pyc.encrypted后缀处理,虽然现在已经过时了 阅读全文
posted @ 2025-05-21 18:33 漫宿骄盛 阅读(163) 评论(2) 推荐(0)
摘要:环境 我这里使用的是mumu12模拟器,IDA8.3pro 一,apk修改 先不要安装,并且不要把apk 放到根目录下的/data目录下,可以放到sdcard目录下 使用MT管理器或者NP查看安装包 然后查看这个文件 确保里面有android:debuggable="true"并且android:e 阅读全文
posted @ 2025-08-25 10:21 漫宿骄盛 阅读(368) 评论(0) 推荐(1)
摘要:做湾区杯时也是遇到了,记录一下 小程序的后缀应为.wxapg 使用 npm i wedecode -g安装工具 运行 命令行直接输入 wedecode 即可运行, 全程自动引导 wedecode 命令行直接指定参数 # 手动指定一个包 wedecode ./name.wxapkg # 或者 编译当前 阅读全文
posted @ 2025-10-26 17:45 漫宿骄盛 阅读(270) 评论(0) 推荐(0)
摘要:在做NSSCTF 4th 的CrackMe&F***Me也是见到被魔改的pyinstaller生成的exe文件 直接用工具直接就报错了,这里来写一写这道题的魔改点,虽然我不会魔改pyinstaller,但 1.魔改判断标识: 正常文件结尾应该是这个: 但是如果修改,将MEI及之后的修改,那就没办法让 阅读全文
posted @ 2025-10-26 17:46 漫宿骄盛 阅读(72) 评论(0) 推荐(0)
摘要:一,介绍: pyarmor是一个对python代码的混淆工具,可以使用Pyarmor-Static-Unpack-1shot来解密 https://github.com/GTedd/Pyarmor-Static-Unpack-1shot-GT 二,解密工具使用 在工具文件夹里有一个名为oneshot 阅读全文
posted @ 2025-10-26 17:52 漫宿骄盛 阅读(1100) 评论(0) 推荐(0)
摘要:一,初查: 1.查版本 先用die或者ida或者010查看pyd对应的版本号 假如版本不对的话是不能运行的 2.查函数和参数 可以使用 python自带的help()和dir()函数,查看里面有什么函数或者参数 二,静态分析 通过查字符串可以找到这样函数的结构: PyLong_FromLong()是 阅读全文
posted @ 2025-10-26 17:53 漫宿骄盛 阅读(306) 评论(0) 推荐(0)
摘要:首先我们要先写一个py脚本引入pyd 然后引入os和sys库 之后使用print(sys.executable) print(os.getpid()) 加载解释器和进程pid 再之后使用input暂停终端 在IDA中选择Local Windows debugger 再点击Debugger,选择att 阅读全文
posted @ 2025-10-26 17:54 漫宿骄盛 阅读(93) 评论(0) 推荐(0)
摘要:因为大版本更新的原因,导致版本17之前的教程几乎都没有用了,所以现在写一个 我目前的版本是17.4.0 里面的题目来自于https://github.com/DERE-ad2001/Frida-Labs 一,指令: frida-ps -Uai: frida-ps : 这将显示有关 Android 设 阅读全文
posted @ 2025-10-26 18:02 漫宿骄盛 阅读(123) 评论(0) 推荐(0)
摘要:一,前言 frida hook windows其实和 frida hook android 的 so库是差不多的 都是先找地址和偏移,然后通过模板来修改。 我的 frida版本是17.4.0,所以如果你的版本小于17.0,那这个的一些内容并不适用你,因为17.0后,frida删除和更改了很多函数。 阅读全文
posted @ 2025-10-26 18:03 漫宿骄盛 阅读(216) 评论(2) 推荐(0)
摘要:参考godot 引擎逆向初探 感觉他这个很全,我就简单记一记方便我使用 一,解包 使用gdsdecomp工具解包 下载下来,然后运行 gdre_tools.exe,选择 RE Tools -> Recover project: 之后的路径选择文件所在的路径,模式选择Full Recovey 会得到如 阅读全文
posted @ 2025-10-26 18:07 漫宿骄盛 阅读(1012) 评论(0) 推荐(0)
摘要:一,一些api idaapi.DBG_Hooks idaapi中用来调试器hook的类, 用来处理断点,这也是基础 可以这样用 tid是线程ip ea是当前指令地址 calss aaa(ida_dbg.DBG_Hooks): #可选 def __init__(self): super().__ini 阅读全文
posted @ 2025-12-01 15:03 漫宿骄盛 阅读(93) 评论(0) 推荐(0)