无条件转移指令JMP 格式: JMP OPRD 功能: JMP指令将无条件地控制程序转移到目的地址去执行.当目的地址仍在同一个代码段内,称为段内转移;当目标地址不在同一个代码段内,则称为段间转移.这两种情况都将产生不同的指令代码,以便能正确地生成目的地址,在 段内转移时,指令只要能提供目的地址的段 内偏移量即够了;而在段间转移时,指令应能提供目的地址的段地址及段内偏移地址值.
今天接触的是《Shark恒零基础百集VIP破解教程》中的示例程序;
打开软件发现需要输入密码,随便输入密码后提示“Password Wrong!”,查壳后发现无壳,载入OD搜索字符串转到判断密码的代码段,分析发现在00401FF9地址段的je(条件转移指令JE/JZ 格式: JE/JZ标号 功能: ZF=1,转至标号处执行)跳转刚好能够跳过提示“Password Wrong!”的语句,猜测这一句是判断密码是否输入正确的语句。单步调试到这一语句,发现跳转并不能实现,先修改标志位,实现跳转,发现猜想正确。接下来就是修改程序,达到破解的目的:
选择修改的代码段保存,打开已修改的程序,随便输入一个密码,发现程序已经成功破解。