IDA遇到的坑

jumpout

简介

jumpout是一种对ida起到反调试的手段,如下图所示,出现了jumpout字眼,看不到后面的源码

image-20220628165210810

jumpout出现的原因是程序多余的汇编代码,如下图所示,将loc_4010A8赋给eax, 然后将eax赋值给局部变量, 再跳转到局部变量, 这样的多余的汇编指令会给ida的识别带来反调试的效果

image-20220628165524562

解决方法

只需将多余的汇编指令nop掉, 直接jump到对应的地址

对jump汇编指令处点击鼠标右键,选择assemble

image-20220628165740613

将局部变量直接修改成地址,然后按回车键

image-20220628165844293

再将多余的汇编指令给nop掉

image-20220628165957849

然后再按下F5,会发现能够识别后面的代码了

image-20220628170120187

函数调用约定

简介

在汇编里面的call,通常是通过eax作为返回值,若改成edx作为返回值,则会影响到ida的识别功能,出现如下图所示的情况

image-20220628211808701

进入这个call(函数),查看一下它的汇编,发现edx作为此call的返回值,因此干扰了ida的识别

image-20220628211937696

解决方法

设置函数调用约定,将此call设置为__usercall类型的调用约定

image-20220628212331173
image-20220628212336993

再次查看此call的伪代码, 可以发现返回了特定的值

image-20220628212441138

最后更新于