吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3395|回复: 8
上一主题 下一主题
收起左侧

[原创] 用DUMP的方式解决IDA F5失败

  [复制链接]
跳转到指定楼层
楼主
白影33 发表于 2021-4-26 16:18 回帖奖励
本帖最后由 白影33 于 2021-4-27 16:38 编辑

用DUMP的方式解决IDA F5失败

0x0 问题表述

在定位关键算法后我们一般使用F5,查看算法,在按下后提示

Decompilation failure:

401E37: positive sp value has been found

Please refer to the manual to find appropriate actions

中文意思是sp的值有问题

0x1 常规方法尝试

找到的解决办法说修改sp,让sp为0

我们在设置打开option》GENERAL》stack pointer把这个选项勾上,就可以看见sp是多少了

红圈里那个绿色的值就是sp,现在为-0x18,我们按atl+k,打开修改sp窗口,修改宁一个红圈的值为-0x18,

点击ok,就修复完成了,可以看到sp为0了

int sub_401810()
{
  int result; // eax
  CPPEH_RECORD ms_exc; // [esp+8C0h] [ebp-18h]

  ms_exc.registration.TryLevel = 0;
  MEMORY[0] = 6530;
  JUMPOUT(__CS__, 0);
  return result;
}

我们按F5看一下,结果明显是错的。这个方法不行。

另一个办法

废话我就不多说了,造成不能F5的原因在于:
.text:00401642                 mov     eax, offset loc_40164A
.text:00401647                 jmp     eax
用OD打开之后 改掉代码在保存,然后重新用IDA打开 F5就可以了,sp-analysis failed 也就消失了.

在OD里直接改成 JMP  40164A   

分析之后不难发现不能F5的原因,就在于跳转.
一个函数里面的一个跳转在未知的情况下会出现不能F5.

这个办法来自于《IDA sp-analysis failed 不能F5的 解决方案之(一)》

.text:00401859                 mov     [ebp+ms_exc.registration.TryLevel], 0
.text:00401860                 mov     eax, [ebp+var_8A8]
.text:00401866                 mov     dword ptr [eax], 1982h

.text:0040186C                 jmp     [ebp+var_8A8]

函数内所有的jmp都看了一下,只有40186c这个不是跳转的一个确定的地址。

本来想在OD里看一下值是多少,然后把这个jmp改成跳转到固定地方,

结果发现开头的这一小段的任何一句汇编都没有执行,也就是说这里是什么都不影响程序执行。

.text:00401860                 mov     eax, [ebp+var_8A8]
.text:00401866                 mov     dword ptr [eax], 1982h
.text:00401866 sub_401810      endp
.text:00401866
.text:00401866 ; ---------------------------------------------------------------------------
.text:0040186C                 db 0FFh
.text:0040186D                 db 0A5h
.text:0040186E                 db  58h ; X
.text:0040186F                 db 0F7h
.text:00401870                 db 0FFh
.text:00401871                 db 0FFh

干脆直接按d改成数据,再次F5依旧是错的。

0x2我的办法

既然在od里是可以运行的,说明函数有办法识别

我就在函数各处下断,断在0x401980 jmp short 00401991,在函数内这条指令之前的汇编代码都没有执行

选择函数内所有会执行的代码->备份->保存数据到文件.

ida打开文件,Edit->Segments->Rebase Program修改基地址,od里查看基地址为0x401000,

然后找到0x401980 jmp short 00401991的位置,在这条汇编那进行图中的选择创建函数,我已经创建过了所以是灰的。

简单看了一下,算法没问题,F5成功。

免费评分

参与人数 4威望 +1 吾爱币 +24 热心值 +4 收起 理由
libozi + 1 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
小朋友呢 + 2 + 1 热心回复!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
redapple2015 发表于 2021-4-26 17:18
楼主的方法不错,学习了。我照着操作了一下,还是有学习的地方
3#
傅粉何郎 发表于 2021-4-26 20:23
4#
Hmily 发表于 2021-4-27 16:03
5#
 楼主| 白影33 发表于 2021-4-27 16:39 |楼主
Hmily 发表于 2021-4-27 16:03
“宁一个办法”有错别字。

谢谢老大的指出,已改正
6#
我总是用菊花 发表于 2021-4-27 22:24
请问下有源文件嘛  想试试
7#
 楼主| 白影33 发表于 2021-4-27 23:14 |楼主
我总是用菊花 发表于 2021-4-27 22:24
请问下有源文件嘛  想试试

面试题程序,不方便给
8#
htpidk 发表于 2021-4-28 13:19
下次遇到试试看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-26 16:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表