逆向
文章平均质量分 77
himobrinehacken
信安
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
clion调试技巧:栈帧结构解析
本文介绍了函数调用栈帧结构和不同调用约定(__cdecl、__stdcall、__fastcall)的特点。栈帧包含返回地址、栈帧指针、局部变量等元素。调用约定决定了参数传递方式、返回值位置和参数空间释放责任方。文章还详细说明了函数调用流程,包括保存寄存器、执行函数体和清理栈空间等步骤,并提供了调试示例,建议使用CLion或VS6.0进行调试,高版本VS变量地址可能随机分布。原创 2025-10-15 15:25:20 · 348 阅读 · 0 评论 -
控制程序执行流程
他调用的是0x00401430(推算出来就是verify_password(编译器不会是这个名字但是这个会明示出来这个是一个函数))这里就是0x00401102调用这个函数后在0x0040110A将EAX返回值取出。这两段一定是str类的函数strcmp和strcpy(移动字符串给另一个变量)当然在动态调试里面也会有地址就是(0x00401122)发现数据有的顺序错了(无伤大雅(只是强迫症))在和0x0040110D与0比较,再执行转跳。我们可以用ida轻易的找到成功的输出地址。和之前的数据结构是一样的。原创 2024-02-18 15:06:14 · 516 阅读 · 0 评论 -
修改函数返回地址
返回地址是当前函数返回时重定向程序的代码。在函数返回的“retn”指令执行的时时候,栈顶元素正好是这个返回地址。“retn”指令会把这个弹入EIP寄存器,之后就会转跳执行。此时NULL结束符authenticated和EBP一共19字符(9-11是authenticated,13-16是EBP,17-19是返回地址)。如果怎加更多的字符的话将buffer[8]的字符会将authenticated、前栈帧和返回地址覆盖。书接上回,我是用的是多个a进行一处操作。前栈帧EBP(覆盖前)前栈帧EBP(覆盖后)原创 2024-02-17 14:23:46 · 923 阅读 · 0 评论 -
利用修改邻接变量
已知溢出之后能修改authenticated,那我们只需将数据溢出到buffer的边界那么这段溢出数据刚好就可以将authenticated修改成0。(2)字符比较后strcpy(buffer,password)这个函数时c语言的高危函数,很容易出现栈溢出。当我们输入的密码不正确的时候strcmp应该返回1(authenticated是1)接下来我们需要输入超过这个字符的字符试试能不能写进authenticated。(1)verify_passowrd()函数的局部变量buffer[8]原创 2024-02-16 13:51:06 · 555 阅读 · 0 评论 -
crack实验
文件偏移地址=虚拟内存(va)-装载基址(image base)-节偏移=0040106e-00400000-(00001000-00001000)=106e。此时的va地址是0010106e用动态调试软件调试,看程序是怎么引起分支的。exe直接用ida开(因该是release的exe)f7能看到真正的代码(这个我是用f8一点点翻出来的)此时需要在二进制文件之中修改对应的字节。修改二进制文件(还是用win+G转跳)利用win+G直接转跳到刚刚的地址。这里转跳是利用test和je实现的。原创 2024-02-14 16:52:37 · 560 阅读 · 0 评论
分享