Ihopenot

Brownian motion

前言

由于虚拟机硬盘经常被干满,就需要经常去加盘,每次加盘都要上网搜一下fdisk怎么用,很麻烦,因此,在这篇博客中我将总结一下这个过程,以便以后可以直接查阅。

虚拟机硬盘扩充(fdisk)

当虚拟机硬盘空间不足时,我们该如何处理?通常有两种选择:添加一块新硬盘或者增大原有硬盘的容量。

对于不使用LVM(逻辑卷管理)的情况,添加新硬盘并不容易直接扩展原始分区的容量。这对于像我这样将整个硬盘挂载在根目录(/)下的用户来说并不友好。

因此,通常我们会选择增大原有硬盘的容量。这样一来,fdisk就可以识别到硬盘容量的增加。但是,由于分区表尚未修改,实际可用空间并不会有所变化。

接下来,我们将通过fdisk来扩大分区容量。

数据无价,谨慎操作,如有重要信息,务必提前备份。

Read more »

MMD

全称mikumiku dance(mmd),让miku跳舞的软件。mmd这个软件挺老的,最新的9.32也是三年前的版本了,mmd本身上手难度低,相对于其他的一些专业3d工具c4d, blender甚至ue5来说下限高,初心者10分钟可能就能做出来能看的mmd了。并且有mme(mikumiku effects)的加持,上限也不低。

这几天稍微玩了下mmd,这里记录下流程和一些踩的坑。

MMD

mmd作为入门级的mmd制作工具,功能挺全的,一般流程是:

1
2
3
4
5
下载人物模型,动作,镜头动作并添加
修改人物动作,镜头动作适配模型大小
下载场景模型并添加
修改人物/镜头的动作/位置适配场景
添加mme,完善细节

上面并没有明显顺序关系,想按什么顺序来都行。

Read more »

Background

前几天比赛用到要编译c代码到android上面跑,当时用了最直接gnu套件交叉编译过去,后来感觉有必要学习一下android ndk的用法,这篇文章就总结一下。

正文

gnu套件

最土制的方法,直接装个编译器,这些应该都可以,ubuntu直接apt装上之后编译就行了。

ndk + cmake

先到官网下个对应版本的ndk

https://developer.android.com/ndk/downloads?hl=zh-cn

cmake 3.21之后好像原生支持了使用ndk交叉编译,只要在cmake开始指定CMAKE_SYSTEM_NAME,再把ndk路径丢给它就行了。

Read more »

Background

想日一个东西,发现是个Unity写的程序,而且被混淆过,有点难看。

想去动调,发现Unity写的东西想调试Assembly-Csharp.dll不能直接用dnSpy起,没法动调,看了下github的仓库,发现仓库已经是Archived的了,很多东西都没了。网上找了下资料很多也语焉不详,这里记录一下怎么用dnSpy去调Unity。

Patch Mono

用dnSpy去调试Unity需要魔改Mono的代码,详细可以看https://github.com/dnSpy/dnSpy-Unity-mono这个仓库。

  1. 首先把mono官方仓库clone下来

    git clone https://github.com/Unity-Technologies/mono

  2. 把dnSpy-Unity-mono也clone下来

    git clone https://github.com/dnSpy/dnSpy-Unity-mono

  3. 编译umpatcher,这个在dnSpy-Unity-mono/src/umpathcer里,需要使用vs进行编译。(需要安装.Net框架)

Read more »

前言

idapython几乎所有api都有注解,在 path/to/your/ida/python/2(3)/ 里面,这里只是做个快速索引。

Read more »

hpad

题目开始提供了3中堆块的分配方式:

进去看一下,发现my heap + my allocation的时候有一个666后门,应该要从这里入手。

gift里面要求解一个奇怪的方程,之后会把bss段上的一个地址泄露给你。

方程直接用z3解

然后看他堆块的实现,结构定义如下:

Read more »

津门杯和红帽杯左右开弓,有点难受。

GoodRe

主要逻辑很简单,静态看不太容易看明白但是动态分析很容易。

前面一部分是把输入简单分割生成的数组,还有一个常量数组。

之后四个相同的函数不知道在干什么

进去看看

Read more »

分析

寻找游戏逻辑代码

​ 上手发现是个unity游戏,首先找Assembly-Csharp.dll,没有,是个il2cpp打包了的游戏。那就找il2cpp.dll和global-metadata。找到了,但是都被加密了。

​ 那么现在要做的有il2cpp.dll的解密和global-metadata的解密。

​ il2cpp.dll解密估计在libsec2021里,当然也可以直接dump,global-metadata可以动调断在il2cpp里跟或者直接GG搜内存dump。

去除反调试

​ 考虑到之后还要修改,去除反调试应该是难以避免的。

​ 打开就看到和初赛一样一样的字符串加解密算法,但是全部内联到了程序里面。

​ 之前的方法不太好处理,也懒得分析它的算法,暂时先不管。

Read more »

分析

寻找Assembly-Csharp

​ 上手看了下,是个unity写的游戏,那么找游戏逻辑首先要考虑的就是Assembly-Csharp.dll,找到之后丢到dnspy,发现打不开,用010Editor打开一看。

​ 明显是被加密了,大量的0xAF,怀疑全文异或0xAF,异或之后发现还有些0xC2,0xC3有问题,这些是由于编码问题,python脚本恢复后用dnspy打开。

​ 能反编译了,但是细看发现里面的东西不对劲,很少,不像真正的游戏代码。

​ 那估计是在mono加载的地方动了手脚,接下来想办法从这里入手。

Read more »

分析

​ flag很简单,程序从hack.dat中读取内容解密。

​ 要求解密后对应位置拼起来是ShooterClient.exe。

​ 解密方法就是简单的异或解密。

​ 做到这里hack.exe已经可以工作了,进一步的,程序将解密出来的字符串和2RSRhrofoWtLeLrJCSlTireznrtx.oeLxuehyyAwbpCOZq0tsS7MZyVdOUoE8比较。

​ 求解过程:

​ 其中 t 就是hack.dat中应有的数据。写入之后运行就得到了flag

flag:2RSRhrofoWtLeLrJCSlTireznrtx.oeLxuehyyAwbpCOZq0tsS7MZyVdOUoE8

​ 之后要求分析hack.exe的实现方法。

Read more »
0%