查壳
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505220249485-1630823387.png)
有壳,脱了
进入IDA:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505220719843-1343892201.png)
会发现我们看不了伪代码,那么看看爆在哪了:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505221842311-105287738.png)
这有标红的,那么把这里改了(IDA改的有点麻烦,建议用OD贼快)这里注意哦,报错点上边还有一个jnz跳转指令,这个是指向报错点的,那么要不要改呢?小小的期待一下:
接下来演示怎么改,这里注意这个call占了很多个字节,我们只要改一个或者两个等几个就好,没必要全部改完,万一弄到重要数据了就要寄了:
进OD:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505222202080-2018975764.png)
来到初始界面,看IDA中报错点是在地址:0040102E上的(这是个物理地址,我们在OD里只用偏移地址就行 即102E):右键:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505222405362-2005500726.png)
移动到转到的位置上:有个文件偏移,点击:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505222441470-2133652813.png)
输入偏移地址:这里注意一定要是4开头的段地址,不然你会改错到别的地方:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505222600130-990552130.png)
来到目的地址:选中call,右键 --> 汇编(空格也行)
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505222627395-2122138545.png)
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505222741533-46186523.png)
输入如上:回车(发现好像多删了一些数据(不影响(为什么呢)可以自己去理解,但是如果你勾选了nop填充,那么就是另一个结果了))先转出看看能不能运行:点击左上角的文件,点击补丁:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505222914647-2084655006.png)
修补文件:完成,再进IDA看看:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505223008723-768946656.png)
发现正常了,进主函数:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505223422512-1681148571.png)
让我们输入14个字符,一个循环对两个计数器进行计数,判断这两个计数器的值,如果满足则正确,越看越像迷宫。
“a d s w”?有点像上下左右,不确定,再看看。
访问这两计数器的内存,进去看看:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505224416505-1264773124.png)
看到类似地图,大胆猜测:(这就是迷宫)
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505224511805-799716589.png)
把迷宫排列出来:
![](https://img2023.cnblogs.com/blog/3074711/202311/3074711-20231128202731705-611348964.png)
七十个字符,那么找组合(ab = 70)一个个试嘛,最后得到(710)就是正确答案:
找起点,我们发现,在存放地图内存那下边有一个 7 0:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505225207651-1449657088.png)
对应一下地图,就是‘+’,起点?那么F会不会试终点?(很明显是的,这就是最后那个判断是否是5和-4)
所以得到flag{ssaaasaassdddw}收工。
posted @
2023-05-05 22:55
TFOREVERY
阅读(
94)
评论()
编辑
收藏
举报