CTF+Binary练习题-Re-Day4
判断输入是否为数字
这里就是核心代码
这里
搞到了 这里截图截错了 应该再往上搞一位
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586def solve_sudoku(grid):    # Find an empty cell (with value 0)    for i in range(9):        for j in range(9):            if grid[i][j] == 0:                # Try all possible numbers                for num in range(1, 10):                    if is_valid(grid, i, j, nu ...
frida for windows参考Frida-Windows 夏洛魂的个人博客
JavaScript API | Frida • A world-class dynamic instrumentation toolkit
12345678910111213#include<stdio.h>#include<stdint.h>int add(int a,int b){    return a+b;}int main(){    int a=6;    int b=7;    printf("%d",add(a,b));}
很简单的测试脚本 挨个把官方文档的api都试一试
搞一个开发环境
123git clone https://github.com/oleavr/frida-agent-example.git cd frida-agent-example/ npm install
网速慢就直接
1git config --global http.proxy http://127.0.0.1:78 ...
前言最近学了点frida-windows想到了litctf最后一道题可以主动调用来获取flag 但大多是用的ce 我突发奇想试试frida 水一下
前置内容省略了 大体的思路就是主动调用
1234567891011121314151617181920212223242526272829303132333435363738394041424344var baseaddres =Process.findModuleByName("GameAssembly.dll")console.log(baseaddres);const RobbieGetFlag = new NativeFunction(    baseaddres.base.add(0x7A52A0),    'int64',  // __int64 返回类型    []       // 无参);try {    // 调用函数    const result = RobbieGetFlag();        // 将返回的int64转换为字符串    // 方法1:直接显示  ...
lit的时候忙其他的去了只能含泪复现 rc4的附件不知道丢哪了 整体的难度还行
FeatureExtraction
将我们的输入处理为32位
发现到key
进入加密函数观察加密流程
搞到密文 
理解加密流程 解密就简单了
123456789101112131415161718key = [0x4C, 0x69, 0x74, 0x43, 0x54, 0x46, 0x32, 0x30, 0x32, 0x35]enc = [0x1690, 0x3E58, 0x6FF1, 0x86F0, 0x9D66, 0xAB30, 0xCA71, 0xCF29, 0xE335, 0xE492,        0xF1FD, 0xDE80, 0xD0C8, 0xC235, 0xB9B5, 0xB1CF, 0x9E9F, 0x9E86, 0x96B4, 0xA550,        0xA0D3, 0xA135, 0x99CA, 0xACC0, 0xBE78, 0xC196, 0xBC00, 0xB5C3, 0xB7F0, 0xB465,        0xB673, 0xB71F, 0xB ...
前言速刷一下angr 学习一下较为浅薄层面的angr应用 
基础脚本12345678910111213141516171819202122232425262728293031323334353637import angrimport sysdef Go():    path_to_binary = "angr2"    project = angr.Project(path_to_binary, auto_load_libs=False)#创建实例    initial_state = project.factory.entry_state()#得到程序的入口    simulation = project.factory.simgr(initial_state)#创建仿真模拟器负责管理程序运行的路径    print(project.arch)#输出框架    print(hex(project.entry))#入口    print(project.filename)#路径    def is_successful(initial_state):         ...
你知道base吗
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include <stdio.h>#include <stdint.h> void encrypt (uint32_t* v, uint32_t* k) {    uint32_t v0=v[0], v1=v[1], sum=0, i;    uint32_t delta=0x9e3779b9;    uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];    for (i=0; i < 32; i++) {        sum += delta;        v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);        v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0&g ...
参考Unidbg 的基本使用(二)
hookfrida进入jadx
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091package com.sina.weibo.security;import android.util.Base64;import java.io.ByteArrayOutputStream;import java.security.Key;import java.security.KeyFactory;import java.security.PublicKey;import java.security.spec.X509EncodedKeySpec;import javax.crypto.Cipher;/* loaded from: classes.dex */public  ...
参考Unidbg 的基本使用(一)
下载源码zhkl0228/unidbg: Allows you to emulate an Android native library, and an experimental iOS emulation
项目结构1234567891011121314151617181920212223242526272829303132├── README.md                     # 项目介绍和使用指南├── LICENSE                       # 开源许可证文件├── .gitignore                    # Git 忽略文件配置├── pom.xml                       # Maven 配置文件,定义了项目的依赖和构建配置├── mvnw                          # 脚本文件,用于 Maven Wrapper (Linux/Mac)├── mvnw.cmd                      # 脚本文件,用于 Maven W ...
参考资料[原创]Android加壳脱壳学习(1)——动态加载和类加载机制详解-Android安全-看雪-安全社区|安全招聘|kanxue.com
类加载器Android中的类加载器机制与JVM一样遵循双亲委派模式
双亲委派模式1.加载.class文件的时候,以递归的的形式逐级向上委托给父加载器ParentClassLoader去加载,如果加载过了,就不用在加载一遍
2.如果父加载器也没加载过,则继续委托给父加载器去加载,一直到这条链路的顶级,顶级classLoader判断如果没加载过,则尝试加载,加载失败,则逐级向下交还调用者来加载.
123456789101112131415161718192021protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{           //1.先检查是否已经加载过--findLoaded           Class<?> c = findLoadedClass(name);       ...
链接Release v1.12.2 · luoyesiqiu/dpt-shell
很有意思的项目 我就试了fart可以成功
使用方法1java -jar dpt.jar -f 3.apk
效果
使用后
脱壳frida-dexdump
小黑盒失败
dumpdex失败











