2023香山杯-wp
hello_pyjadx打开apk文件,查看MainActivity函数 ,猜测使用了chaquo框架
跟随函数调用
分析chaquo.python.Common
得知关键函数文件后缀名为 ‘.imy’,并且以Zip方式打开
将apk文件后缀名改为zip打开
跟随文件路径如下
将app.imy文件后缀名改为zip并打开
可以看到hello.py文件
根据混淆特征知道是使用了Oxyry Python Obfuscator
目前没有找到去混淆的工具or脚本,只能人工手撸去混淆
通过特征值delta、MX等,猜测是XXTEA加密
去混淆得到大致代码逻辑如下
编写解密脚本如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#include <stdio.h>#include <stdint.h>#define DELTA 0x9E ...
Android学习
前言Android StudioJDK
30分钟学会UML类图 - 知乎 (zhihu.com)
安卓系统架构图
Hello World创建新项目
创建完成会自动打开MainActivity.java,AndroidManifest.xml以及activiyt_main.xml,如下图所示
其中MainActivity.java 是文件的主函数
AndroidManifest.xml:Android应用程序的清单文件,是整个Android应用程序的描述文件
activity_main.xml:布局文件,Android的UI界面显示的视图,所有的控件在这里设计
由于我们是在PC端编写安卓的apk 所以需要使用手机模拟器进行调试
选择手机型号
选择手机系统
命名
点击finish等待安装创建完成
启动模拟器即可看到我们的手机界面
好 接下来我们回过头分析主函数MainAcvitity.java
1234567891011121314package com.example.a1;import androidx.appcompat.app.AppCompatActivit ...
2023HGAME-Re
Week 1test your IDA
Die查壳
IDA反编译
easy_asm
123456789101112131415161718192021222324252627282930313233343536373839404142; void __cdecl enc(char *p).text:00401160 _enc proc near ; CODE XREF: _main+1B↑p.text:00401160.text:00401160 i = dword ptr -4.text:00401160 Str = dword ptr 8.text:00401160.text:00401160 push ebp.text:00401161 mov ebp, esp.text:00401163 push ecx.text:00401164 ...
N1Book-Re章
0x00 Hello,Re
Die查壳,64位无壳PE文件
IDA反编译
简单分析一下
用户输入字符串Str1 ,通过strcmp函数进行比较
flag即为
1n1book{Welcome_to_reversing_world!}
0x01 BabyAlgorithm
Die查壳
64位无壳ELF文件 ,IDA反编译分析主函数
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778__int64 __fastcall main(int a1, char **a2, char **a3){ __int64 result; // rax int i; // [rsp+Ch] [rbp-E4h] char v5[16]; // [rsp+10h] [rbp-E0h] BYREF char s[64]; // [ ...
2022RCTF-Re赛后复现
0x00 CheckYourKey
一道安卓逆向
先扔jeb里面看看,找到MainActivity
简单分析一下上面的java代码
可以看到关键判断函数为ooxx
但ooxx函数为空
再分析一下,可以看到static代码块中多了一条语句:
1System.loadLibrary("CheckYourKey");
在Android开发中,原生代码一般用C\C++编写,然后编译为一个动态链接库,即 .so文件 。
loadLibrary的作用就是加载这个动态链接库,使后面的代码能成功调用到对应的原生函数。
静态代码块的执行时机非常早、比构造函数、onCreate都要早,在类加载的时候就被调用。库加载并非一定要在当前类、static块中!!!
加载库还有其他方法,例如使用 System.load(String)方法,其传入链接库的具体路径;甚至有的是在Native层中使用dlopen、mmap等方式来进行加载,相当于自己实现一个loadlibrary。其最终目的都是为了将代码加载入内存中 。
Android编译后的Apk文件 其实质上是一个Zip压缩包 ,打 ...
CTFRe-Python中z3库的使用
0x00 前言在做逆向题目时,很多线性方程需要用z3库进行求解,写篇博客具体了解一下
0x01 z3库的安装123pip install z3orpip install z3-solver
0x02 z3库的使用
创建一个解的声明对象:
1s = Solver()
添加条件:
1s.add(判断公式)
判断是否有解:
12s.check()# 若有解,则返回 sate/sat 反之则返回 unsate/unsat
返回最后的解:
123result = s.modul()print(result)
声明不同类型的未知数:
1234a, s, d = Ints('a s d')#创建一个‘int’类型的对象,但其实运算时候是'ArithRef'类型, #并且无法使用按位运算x = Real('x')#创建一个有理数类型的变量。y = Real('y')
求解按位运算(⭐):
12345BitVecs(name,bv,ctx=No ...
2022NCTF-Re赛后复现
0x00 ez_rev常规查壳 64位无壳ELF文件
IDA反编译查看主函数伪代码
1234567891011121314151617181920212223242526__int64 __fastcall main(int a1, char **a2, char **a3){ char *v4; // rbx __int128 *v5; // rdx char *v6; // rdi __int64 v7; // rdx puts("Input:"); __isoc99_scanf("%s", &dword_40A0); if ( dword_40A0 == 1179927374 && byte_40A4 == 123 && byte_40C9 == 125 && !byte_40CA ) { v4 = (char *)&unk_40A5; v5 = &xmmword_40E0; do { v ...
DASCTF2022十一月赛Re赛后复现
0x00 babytea看名字猜测魔改的TEA加密算法
第一步老规矩查壳
32位无壳PE文件
IDA反编译一下得到主函数伪代码
12345678910111213141516int __cdecl main(int argc, const char **argv, const char **envp){ unsigned int i; // [esp+4h] [ebp-28h] char Buf1[32]; // [esp+8h] [ebp-24h] BYREF memset(Buf1, 0, sizeof(Buf1)); sub_401350("please input: \n"); sub_401390("%32s", Buf1); for ( i = 0; i < 4; ++i ) __scrt_is_nonwritable_in_current_image(dword_41F014, &Buf1[8 * i], &unk_41F004); if ( !memcmp(Buf1, & ...
2022UNCTF Re
0x00 whereisyourkey-广东海洋大学
查壳-无壳32位ELF文件
IDA反编译
定位到关键加密函数
编写解密脚本如下
123456789101112131415x = [118,103,112,107,99,109,104,110,99,105]y = []for i in range(0,10): if(x[i]==109): x[i] = 109 elif(x[i]<=111): if(x[i]<=110): x[i] -= 2 else: x[i]+=3for i in range(0,10): y+=chr(x[i])print(y)# ['y', 'e', 's', 'i', 'a', 'm', 'f', 'l', 'a', 'g']
0x0 ...
DASCTF X GFCTF2022十月赛Re赛后复现
0x00 前言又是get新知识的一天呢
duilib逆向:Duilib逆向分析和按钮事件定位
0x01 pycode拿到题目附件
是个txt文件 看到代码第一眼愣了一下 没见过
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 1 0 LOAD_CONST ...