有壳aspack,一般遇到都是upx,网上搜了aspack脱壳工具都没脱成功,使用手脱
手脱aspcak
打开od
下面使用ESP定律法进行脱壳
push压栈了,我们观察到esp中的值变红了,改动了。
在内存窗口中转到
下这个地址下硬件断点
运行软件,断到了。
接着f7
pop出栈,我们发现有个大规模跳转,应该就是oep了
调用api,是oep
准备dump一下
使用Lord Pe
先修正大小,然后dump
这个时候,我们还不能打开,还没修复IAT
打开后吧oep的偏移地址放入
获取表函数。无效的就删,然后点击修复文件,把之前dump出的文件就行修复
RVA不讲
已经脱掉了
用ida打开,直接f5
base58解码后发现是假的,直接不看
这个就是真的。
直接看加密函数,很麻烦,直接动调
构造42位input
lobyte是取地位的意思,我们跑起来后直接进这个地址找流秘钥
,
每4位取1,直接取,然后写exp
#include<stdio.h>
#include<string.h>
int main()
{
int v2[42];
v2[0] = -61;
v2[1] = -128;
v2[2] = -43;
v2[3] = -14;
v2[4] = -101;
v2[5] = 48;
v2[6] = 11;
v2[7] = -76;
v2[8] = 85;
v2[9] = -34;
v2[10] = 34;
v2[11] = -125;
v2[12] = 47;
v2[13] = -105;
v2[14] = -72;
v2[15] = 32;
v2[16] = 29;
v2[17] = 116;
v2[18] = -47;
v2[19] = 1;
v2[20] = 115;
v2[21] = 26;
v2[22] = -78;
v2[23] = -56;
v2[24] = -59;
v2[25] = 116;
v2[26] = -64;
v2[27] = 91;
v2[28] = -9;
v2[29] = 15;
v2[30] = -45;
v2[31] = 1;
v2[32] = 85;
v2[33] = -78;
v2[34] = -92;
v2[35] = -82;
v2[36] = 123;
v2[37] = -84;
v2[38] = 92;
v2[39] = 86;
v2[40] = -68;
v2[41] = 35;
int v3[42]={56 ,120 ,221 ,232 ,0 ,175 ,191 ,58 ,107 ,251 ,184 ,12 ,133 ,53 ,92 ,173 ,230 ,0 ,224 ,138 ,29 ,189 ,70 ,210 ,43 ,0 ,21 ,36 ,198 ,173 ,161 ,201 ,123 ,18 ,40 ,0 ,5 ,0 ,114 ,62 ,16 ,161
};
int i;
char flag[42];
for(i = 0;i<42;i++)
{
flag[i] = (v2[i]-71)^v3[i];
printf("%c",flag[i]);
}
}
解决