2025ZJNUCTF Re-wp+复现(无悬赏)
re1
nop一下
改eip到
1 | import re |
re2
改了delta,记得转端序
1 |
|
re3
程序藏在脱壳代码中,而不是内部程序。
有花指令
push全面的全是花指令全部nop掉,下面有一段smc,data就是上面那段函数,注意只有132位,记得计算。
1 | i =0 |
解密后恢复函数
v10为我们的输入,从上面的start的rdi寄存器可以看出来
加密逻辑
1 | for ( j = 0LL; *(&word_9B1E + j) == ((((j ^ *(v10 + j) ^ 0x66) >> 4) | (16 * (j ^ *(v10 + j) ^ 0x66))) ^ 0x55); ++j ) |
解密脚本
1 |
|
re4
第一处的逻辑
vqtbl1q_s8(*(int8x16_t *)&StringUTFChars_1[16 * i], t)对应汇编代码 TBL V0.16B, {V0.16B}, V1.16B;即以v1为索引,在表v0中查找值,放入v0中,这里是128位为一组进行操作,每次操作都是以byte为单位,逻辑大概是
1 | for i in range(16): |
再对表进行异或修改,用修改后的表继续下一组操作,一共3组128位数据共48字节。一起的逻辑是
1 | for j in range(3): |
下面有个循环位移,后面还有个换表base64解密就行
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 huanghunr's Blog!