象的函数整个上梳理了一遍上面咱们对全体创维护置对,要解密的dll下面最先提取出。 hash值发送到了驱动对象上面咱们明确盘算推算的32字节,节hash源委的异或的数据并没有传出到dll中看到驱动对象中对应的管造函数:可能看到32字,m128i **)(a1 + 112)而是直接把编码的数据复造到了*(__,h值底子没有行使的因而说咱们的has。乐天堂官网下载app, tion记实的是一个函数指针数组Driver-MajorFunc,RP的调派函数函数是管造I,式发出哀告是用户模,间的桥梁I/O约束器发出然后由用户态与内核态之。 n函数太大由于mai,数的巨细惟有64Kida默认反编译函,反编译会打击因而这里会。 个bmp图片次序加密了一,进而解密还原图片取得flag让咱们逆向次序取得加密算法。 256然后举动aes_128的初始化密钥因而说即是先用取得pdata举行了sha。 pc通讯初始化的地方回到驱动次序中找到l,e函数管造lpc通讯哀告用StartRoutin。 加密的函数下断点然后直接正在结尾,否是咱们的输入看加密数据是,前没有转移操作确定输入正在之。 结尾的加密剩下即是,轮加密32,用随机数确定每轮加密函数。rand初始化种子由于这里没有行使s,默认的种子:1那行使的即是。 正在我剖析来上面也说了,ag明文加密的数据有2种用于和fl,种结果都试了一下这里我正在解密时两,或取得无误结果从第一种累异。 找遍地理从dll发送的数据的地方从StartRoutine函数,else分支中这里的if ,与它之前的一起字节异或一个是累异或:每个字节;有的27字节数据后面正好构成32字节数据其余一个是将M@gic字符串增添到历来。 象指针(PDRIVER_OBJECT Driver)咱们明确DriverEntry的第一个参数是驱动对。ECT Driver数据组织流露驱动对象用DRIVER_OBJ,个实例被内核加载它做为驱动的一,动只加载一个实例而且内核中一个驱,多惟有一个驱动对象也即是一个驱动最。 加密后看密文与明文的相闭最先我通过自身创修文献,节一组加密涌现16字,果都不相通每次加密结,会被填充到32字节且明文的结尾一组,字节数据加末尾的0x80接着会正在密文后填充128。 incrypt由于行使的w,分别行使的加密算法通过alg_id来,文档查看: 可能解析到从以上我看,ADDING与cbc形式加密次序是行使了PKCS5_P。 也很好逆加密算法,惟有异或一是加密,法加,及移位减法。的数据的转移不受明文的影响二是要和flag明文加密。 是用z3来解起首思到的,的时刻涌现运算实在惟有加但刚复造完代码打算跑剧本,减,或异,很好办了那这就,的运算加法改成减法直接把密文用次序中,成加法减法改,一遍就解密了解后倒着跑,。 析次序接着分,in函数来到ma,点繁琐代码有,帮剖析调试辅,CTF_XX\目次下的文献最先即是去取C:\XX_,然后对其加密取得文献实质。 于后面和flag明文加密的32字节数据接着即是本题解题的症结了:找到无误的用。 译后的伪代码然后窥察反编,代码的运算且不是线性运算对输入举行了5000多行。 ad是设立驱动卸载时要挪用的回调函数Driver-DriverUnlo,Entry中创修的设置对象通常负担删除正在Driver,联的符号链接删除并把设置对象所闭;