checkin writeUp(未完成)

Checkin WriteUp

直接上调试器,定睛一看

一眼UPX, 懒得上工具,直接脱

Pushad指令会把当前八个通用寄存器和一个eflag压入栈中

那么不远处就一定有popad还原现场,我们直接Ctrl+F搜索popad

双击

注意看这个jmp

好家伙,跨区段跳转,基本能确定这里就是跳往原始入口点了

直接F4运行到此处 F8单步

好,Debug编译的,我们直接打开x64dbg自带的Scylla插件

没处理iat那咱就直接Dump,然后 FixDump

Fix dump的时候要选择Dump出来的文件

Ok,脱掉了,我们试试能不能运行

糟糕,并不能运行,上调试器看一下啥原因

C0000005 内存访问异常,发现根本就没这块内存,因为这个exe是有随机基址的,所以脱下来有问题,我们打开CFF Explorer

给这个dll can move属性勾选掉

然后保存

再次进行脱壳

好,这次就可以运行了

随便输入点东西点击kick按钮,会有个MessageBox

我们在MessageBoxA下断,然后往回跟

我们看到,上面那个call的返回值就直接决定了成败与否

我们进去看看

发现了可疑的东西

Cmp eax, 0

Jb xxxx

Jae xxxx

我们知道,jb这条指令是无符号小于则跳转,这都无符号了还怎么小于0, 典型垃圾指令,把jb nop掉

我们发现jae跳转的地方正是下面一条指令的地址+1, 而正好这个call调用的地方根本就不存在,我们把E8这个字节改成90

芜湖,果然是垃圾指令,那么jae这个跳转也可以nop了,没什么用了,一共5-6处这样的垃圾指令,处理掉然后保存文件

记得后缀改exe

posted @ 2022-12-09 19:45  N0t3  阅读(29)  评论(0编辑  收藏  举报