hgame2022
hardend安卓逆向,有点薄弱啊
试试
用jeb打开
看到bytecode的文件夹名称为secshell
检索一下,是邦邦加密
关于各种packer的lib名称
apk各种壳的检测_caiqiiqi的博客-CSDN博客_apk检测
123456789101112131415161718192021222324252627282930313233343536373839404142"libchaosvmp.so":"娜迦", "libddog.so":"娜迦", "libfdog.so":"娜迦", "libedog.so":"娜迦企业版", "libexec.so":"爱加密", "libexecmain.so":"爱加密", "ijiami.dat":"爱加密", ...
hgame2022
creakme3这题是ppc(powerpc)逆向
我的ida似乎没有办法解析ppc
换成ida7.7就行
似乎是一个自输出flag的类型
看看怎么把它运行起来
仔细看看a里面的数据
似乎是要排序的
前面的小数据是阿斯卡码
后面的则是比较数据
这里提取数据的时候还有一个大小端的问题
1234567891011121314151617181920212223242526data=[0x30000000, 0x7D4E0000, 0x30000000, 0xBD670000, 0x30000000, 0x487A0000, 0x30000000, 0xA2820000, 0x30000000, 0x3E930000, 0x31000000, 0x189C0000, 0x32000000, 0xFF5A0000, 0x32000000, 0xD76C0000, 0x32000000, 0xCAA60000, 0x32000000, 0x79BD0000, 0x32000000, 0xBDCE0000, 0x33000000, 0x4A320000, 0x33000000, 0x92320 ...
hgame2022
Answer’s windows这题查壳
因为不是传统的main函数这类的
就先采用检索字符串的方式来跳转正确界面
定位到right 和 wrong的界面
看的出来,v11和后面的字符串对比,而加密字符串看起来像是变表base64
那就顺着v11向上搜索
sub_7FF7B0221F90这个函数似乎就是加密函数
进入查看
应该就是base64 不过是变表
那就想办法提取一下变表数据
由b64特征,v22应该就是变表数据储存的地方
不过对qword_7FF6E97A2000检索发现是原表
应该是还有对其进行了二次修改
交叉检索检测出处
这里替换成了33-97的新表
12345678910import base64new_table="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a"table='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= ...
hgame2022
upx1
这题被加上了upx壳
那就先丢进去脱个壳
发现脱壳失败
用010查看upx壳是否被修改
upx文件头部位置被修改了,尾部也有,对照修回来就行
对于upx的文件结构应该有一些了解,这里是修改了magic头部,改成了UPX?,它本应该是结构体的一部分。应该改回UPX!,
物联网恶意软件中的UPX反拆包技术 - CUJO AI
解包成功之后
进入start函数
这个估计还是静态编译的,没有函数名
重新命名一下
这个看起来就是upx0的plus版
上一题的脚本偷过来用ww
12345678910111213data2=[0x00008D68, 0x00009D49, 0x00002A12, 0x0000AB1A, 0x0000CBDC, 0x0000B92B, 0x00002E32, 0x00009F59, 0x0000DDCD, 0x00009D49, 0x0000A90A, 0x00000E70, 0x0000F5CF, 0x00005ED5, 0x00003C03, 0x00007C87, 0x00002672, 0x0000AB1A, 0x00000A50, 0x0 ...
hgame2022
upx0这题虽然叫做upx0,但是他并没有套上upx的壳
直接解就行
从start开始
因为全是函数名
我自己重新命名了一遍(后面知道这是因为静态编译的缘故)
进入main函数
得知密文长度以及字符串加密方式
这个加密方式很好理解
不过在他*2的过程中有数据损失了
应该没有办法用正常的方式得出原密码
后面是对比较数据的一长串赋值以及比较
先动调提取个数据
然后写个脚本开始爆破就行
1234567891011121314151617data=[0x00008D68, 0x00009D49, 0x00002A12, 0x0000AB1A, 0x0000CBDC, 0x0000B92B, 0x00002E32, 0x00009F59, 0x0000DDCD, 0x00009D49, 0x0000A90A, 0x00000E70, 0x0000F5CF, 0x00000A50, 0x00005AF5, 0x0000FF9F, 0x00009F59, 0x0000BD0B, 0x000058E5, 0x00003823, 0x0000BF1B, 0x000078A7, 0x0000AB1A ...
hgame2022
Fake shell先看看init函数
这里面似乎有一个替换的,将aHappyhg4me 替换成新的字符串
进入主函数
进入sub_19E9
这里面有一个rc4
也包括了上文提到的aHappyhg4me
而aHappyhg4me在这里是作为一个key进行rc4解码
然后就可以直接开始写了,rc4也没有进行魔改
直接用网上的脚本就行了
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#include<stdio.h>#include<string.h>void rc4_init(unsigned char*s,unsigned char*key,unsigned long len){ int i=0; int j=0; unsigned char k[256]={0}; unsigned char temp = 0; for(i=0;i<256;i+ ...
hgame2022
xD_MAZE迷宫题
easy
只有前进,那么就只需要考虑怎么往下走就行
用ida_python 提取一下map
123456addr=0x0000000000404020arr=[]for i in range(4096):arr.append(get_wide_byte(addr))addr+=1print(arr)
然后只要找出下标
写出脚本就行
1234567891011121314151617map_2=[32, 32, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 32, 35, 35, 35, 35, 35, 35, 3 ...
最近的练习
随便扒拉来的题目where_this_from.exe刚拿到这题,直接给干重启
麻了
检查一下,需要输入两样东西
一个是user name
另一个是 key
而题中很多函数是无法识别的,内部由this函数组成
推测为ida对结构体的解析不全
先对整体函数进行简单分析一下
动调跑起来
Fail接了一个函数
具体为创建一个dat文件
写入能让你shutdown的指令
然后电脑就重启力,打个断点绕一绕
在ida里面看见了try 的注释,我一开始以为是seh,但是并没有看到对应的exception或者是finally块
老老实实看代码
上半部解析完成之后
发现整体的流程大概是
通过一系列变化生成中间string ,储存在v41,然后将nomoney转为数组存储在v39
对key进行一轮异或
最后对key和v36进行对比
v41和,nomoney都是可以直接用ida提取出来的
v36的值可以通过动调直接提取
1[0x51, 0x3C, 0x0F, 0x67, 0x5C, 0x2C, 0x41, 0x53, 0x6A, 0x49, 0x70, 0x51, 0x68, 0x54, 0x2B, ...
hgame2022
creakme2进来看看
流程很短,主要应该都是集中在了几个sub_14000的函数里面
看到各种偏移和异或,推测为tea的变种
而
9E3779B1,不是标准的delta数,再仔细看看流程
动调输入任意数据,弹出报错
进入汇编查看,在函数内部发现
seh异常处理标志
通过exception,跟进filter 函数
发现在这里有一个对寄存器比较的操作
检索一下0C0000094h是什么数据
内核学习-异常处理 - 网安 (wangan.com)
除零异常,和上面弹出的警示一致
返回try块检查异常变更
可以看到这边用sum和0x12345进行了异或
当被除数为0的时候 (idiv处)
也就是sum>>31为零的时候,抛出除数异常
那就可以直接开写了,这个也没有什么太多不一样的,魔改的xtea
因为sum发生了变化,直接改改
抄了个通用脚本ww
12345678910111213141516171819202122232425262728293031#include <stdio.h>#include <stdint.h>void de ...
无题
BCACTFGhostgame
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647########## ########## ########## ########## ########### # # # # # # # # ## # # # # # # # # ## # # # # # # # # # # # # # ## # # # # # # # # ## # # # # # # # # #### ...