Acid_burn
调查信息拿到首先用exeinfope来看看:
没有壳
Delphi 写的
运行来看看:
当打开的时候首先是这个界面:说明等会需要将这里给nop掉,需要将这个界面给kill掉
然后是:
有2个Serial
第一个是:用户名和序列号
第二个是:只用序列号
大致的看一看这个程序它是在干什么的。
关掉第一个窗口首先我们需要破解的是:将第一个窗口给关掉【在运行的时候不会弹第一个窗口】
我们通过关键字:hello you have to kill me 来进行定位。
我们用x32dbg来打开,然后寻找一下字符串:
通过关键字进行定位:
定位过去:
我们首先在这个call上面的push 0 下一个断点
然后我们F8单步运行一下。得知在运行下面这个call的时候第一个窗口就会弹出来。
这里就有2个思路:
把下面调用窗口的这个call给nop掉
返回到主程序,让它不跳转 过来。里面下面的ret就能知道它主程序的位置。
尝试第一种:
将这个call给nop掉的话,在运行的时候会报错。所以这里我们尝试第二种方法。
我们重新载入这个程序:
这里可以看到堆栈里面的返回值【因为ret指令是 ...
安卓.so
这里可以看我写过的的一篇CTF题目:
https://www.zmypb.top/2023/09/22/%E6%AF%94%E8%B5%9B%E5%A4%8D%E7%8E%B0-ctfshow-%E5%86%85%E9%83%A8%E8%B5%9B/
这个里面的“屏幕裂开了”
首先用到这个是,在安卓里面有’native’这个关键字。
MoeCTF_2023
EQUITION考察IDA修改数组,和z3求解器。
IDA修改数组
首先我们看到这里的数组v4大小,char v4[24],但是scanf(“%31s”, v4);这里就知道数组的大小出了问题
我们需要对他的大小进行修改。
我们双击4v进入:
然后在第一个 位置 ,右键:
选中转换为数组
修改成31
z3解密定义数组
1v4 = [Int('serial%d' % i)for i in range(31)]
最后:
123456789101112from z3 import *v4 = [Int('serial%d' % i) for i in range(31)]solver = Solver()solver.add(填入式子)flag = []if solver.check()==sat: m = solver.model() for i in v4: flag.append(str(m[i])) print ("".join(flag)) print ('ok ...
SHCTF2023
WEEK1ezasm简单分析是一个xor 后的 sub
123456789code = "nhuo[M`7mc7uhc$7midgbTf`7`$7%#ubf7 ci5Y"flag = ""for i in str(code): temp = ord(i) temp += 0xA temp ^= 0x1E flag += chr(temp)print(flag)#flag{It_is_als0_impor@nt_t0_13arn_4sm!}
easy_re打开是一个简单的高四位和第四位的转换
123456789101112131415161718192021222324def swap_high_low_nibble(num): # 通过位运算分离高4位和低4位 high_nibble = (num >> 4) & 0x0F low_nibble = num & 0x0F # 交换高4位和低4位 swapped_num = (low_nibbl ...
python打包exe
使用 pyinstxtractor.py 来处理python打包的exe文件。
python pyinstxtractor.py xxx.exe
这里得需要用同版本的python版本来处理。
如上就是版本不对,所导致的错误: Skipping pyz extraction
当处理后会得到一个文件夹。xxx.exe_extracted
特殊的:如果当打包exe的时候使用了key就需要我们解密。
使用脚本来解密:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748import globimport zlibimport tinyaesfrom pathlib import PathCRYPT_BLOCK_SIZE = 16# key obtained from pyimod00_crypto_keykey = bytes('00000000new1star', 'utf-8')for p in Path("./ ...
UPX
一般来说:UPX之间脱壳就好了
但是有时候会遇到UPX的壳,UPX的特征被修改了。这个时候就需要我们将特征修改回去。
如上面:
就需要把TUT改下UPX
然后就能用工具脱去了。
FSCTF2023
xor打开真就是一个非常简单的xor
123456enc = b"t~suiFz{aM{aMsMwsakM`wdw`awo"flag =""for i in range(len(enc)): flag += chr((enc[i]) ^ 0x12)print(flag)#flag{This_is_a_easy_reverse}
EZRC4看题目也知道。rc4解密
打开找到key 和 字符串 用在线工具解密就好了。
Tea_apkXXtea加密还有base64
第一次遇到:它居然有key
在线解密。
ezbroke用die查看,啥都看不出来。我们用010看看。
这里的PE文件的DOS头被修改了。我们改回去。
用IDA查看,发现是upx壳。我们脱去看看。
报错:
我们重新用010去看。按照经验就是UPX的特征被修改了。
果然:
我们将它该回去:UPX!
得把所有的TUT都改成UPX
然后再来用UPX脱壳。
我用upx -d 就拖掉了。
用IDA pro 打开:
然后就是一个vm的 ...
用C语言记录一下ida反编译语言
这里主要就是记录一下wp吧
123456789101112131415161718192021222324252627282930313233343536373839404142434445#include <stdio.h>#include <string.h>#include <stdlib.h>#include <stdint.h>uint8_t my_uint8_variable;int main() { srand(1400333646); uint8_t enc[100] = { 0xE8, 0x80, 0x84, 0x8, 0x18, 0x3C, 0x78, 0x68, 0x0, 0x70, 0x7C, 0x94, 0xC8, 0xE0, 0x10, 0xEC, 0xB4, 0xAC, 0x68, 0xA8, 0xC, 0x1C, 0x90, 0xCC, 0x54, 0x3C, 0x14, 0xDC, 0x30 }; char key[] ...
C#反编译器
C#用dnSpy来进行反编译
大概就是这样。