声明
这个题,分析了一下,两个知识,一个是栈指针修改,还有一个smc自修改(自修改的话,两种破法,一个是idc脚本,一个是动调)
栈指针修改

进入程序直接地址0x401838的sp指针(堆栈不平衡)报错,点击options—>general—>勾选stack pointer,然后找到地址0x401838,截图看看

call函数调用前后 栈顶指针sp位置不一样,可能吗???????那栈怎么平衡????详情请看https://blog.youkuaiyun.com/dj0379/article/details/8699219?utm_source=app&app_version=4.5.5
二话不说,改。鼠标点到call那里,然后按键盘Alt + K

紧接着把这个sp改成0

接着,下面还有一个这样报错,照改即可

改完之后就能F5喽。

wrong

omg

导出 内存数组快捷键shift + E
unsigned char unk_4030C0[] =
{
0x66,0x6B,0x63,0x64,0x7F,0x61,0x67,0x64,
0x3B,0x56,0x6B,0x61,0x7B,0x26

本文探讨了栈指针修改技巧在程序逆向中的应用,包括遇到的错误和解决方法,以及SMC自修改的挑战,重点介绍使用IDC脚本实现动态代码解析的过程。通过实例演示如何利用IDC脚本导入和操作内存数组,以获取虚假flag并修复程序执行问题。
最低0.47元/天 解锁文章
7768

被折叠的 条评论
为什么被折叠?



