中断指令表https://blog.csdn.net/trochiluses/article/details/20008631
IDA
修改数据格式
IDA去除花指令
此处由花指令。
显示偏移:
去除脚本:
#include <idc.idc>
static main()
{
auto i,from,size;
from=0x400000; //起始地址
size=0x2000; //扫描数据块大小
for ( i=0; i < size; i++ )
{
if ((Byte(from)==0xe8)&&(Dword(from+1)== 0))
{
PatchByte(from,0xeb);
PatchByte(from+1,0xE);
continue;
}
from++;
}
Message("\n" + "OK\n");
}
脚本中0xEB是jmp指令,0x0E是指jmp14个字节,在0x40102F处跳转14个字节就是0x40103D
F5反编译:
IDA修复栈平衡
反编译时报错,sp栈有错误。
查看栈帧,首先打开栈帧:
main_0汇编里有栈帧不平衡:
在084右键修改栈帧,位0(尽量小的值)。
平衡了:
z3
pip install z3-solver
from z3 import *
x,y,z=Ints('x y z')
s=Solver()
s.add(2*x+3*y+z==6)
s.add(x-y+2*z==-1)
s.add(x+2*y-z==5)
print s.check()
print s.model()