PoRE: Lab 8

恭喜你获得新成就!4天才写完这个lab
xswl这个东北味的助教
在你还没做的时候就告诉你不要怕,微笑着面对他哈哈哈哈哈


先装IDA,这个图标看得我好害怕
macOS新版本可能会出现crash:
https://www.jason-z.com/post/ida-pro-70-macos-1014-crash
先做做助教的warmup(哇真的不是一个难度级的
PoRE: Lab 8_第1张图片

然后正式开始lab~
先看下Java:
PoRE: Lab 8_第2张图片
没什么用,就是调用了本地库easyNative.so

然后就快乐地跳进坑里,直接找了两个名字看起来一本正经的函数
经指点发现引用本地库时会先调用JNI_Onload函数,所以实际调用的函数会被覆盖掉
PoRE: Lab 8_第3张图片
PoRE: Lab 8_第4张图片
这里通过RegisterNatives动态注册了两个函数
在这里插入图片描述
这种JNINativeMethod结构体的大小是12字节
在这里插入图片描述
然后第一个tzdnb(名字是认真的吗)函数判断isValid
PoRE: Lab 8_第5张图片
挺简单的,但我卡了很久的原因就是那个EROP的字节序问题…

然后再看dotsu的Checkflag,进去先提取{}里的内容,传入sherlly函数,里面以输入的字符为索引,从array中查找字符替换:
在这里插入图片描述
PoRE: Lab 8_第6张图片
然后传回来,dotsu再替换字符(a-m替换为n-z,n-z替换为a-m)
PoRE: Lab 8_第7张图片
最下面就是检验,result==1就可以了
最后那些_mm_xor_si128之类的指令,猜一下可能就是v17=0
但还是查了下资料:
PoRE: Lab 8_第8张图片
emm对的,所以最后处理的字符串等于给出的两个字符数组的内容
在这里插入图片描述
逻辑清楚啦,最后就是全部逆向,还原出原始输入即可

PoRE: Lab 8_第9张图片

手动微笑,继续写pj…
这些作业真的太煎熬了…不一定能上岸的感觉

你可能感兴趣的:(PoRE: Lab 8)