本文涉及到了纯ida 使用案例,逆向Acid_burn报告,通过使用ida直接修改汇编指令,或修改机器码,将补丁应用到输入文件中,超详细解析。
如果有帮到大家,哥哥姐姐不要吝啬点个关注呗!后续会更新更多其他有关汇编,逆向和web的实操超详细解析。谢谢大家!
一、分析软件
当我们点击该程序的时候会弹出一个窗口,这个窗口需要进行去除。
点击确定之后进入程序的主窗口,发现有两个按钮根据按钮上的字符串判断出应该是需要输入序列号和名称的位置。
我们首先来看左下角的按钮,点击发现有两个输入框,分别是输入用户名和序列码,然后点击Check it Baby 就会发现程序进行检查,检查错误就会弹出窗口里面的内容是:Sorry ,the serial is incorect ! 这个位置也是一个要破的点。
接下来我们进行返回来查看右边按钮的情况,点击之后发现有一个输入框,是提醒你输入序列码的,我们进行输入,然后点击Check it Baby,程序进行检查,检查失败会弹出下面窗口,内容为:Try Again!!,发现这也是一个我们需要破的一个窗口。
二、破弹窗
我们将Acid_burn可执行文件附加到IDA中。
直接默认选项即可
按空格切换视图
点击alt+t,查找字符串you have to kill me
点击该行代码出现详细代码。
这里点击General,然后
全部打钩方便我们后续观察
我们找到弹窗代码后,用空指令替换该弹窗指令或者将第一行代码使用RETN指令替换,即可成功跳过弹窗。在执行到弹窗函数之前会做一个je判断,如果zf=1,则跳转;zf=0则不跳转,这里我们使用暴力破的方式直接jmp过来,跳过弹窗函数。
这里演示一直修改方式
修改第一行代码为retn指令
点击选中该地址,然后点击hex view
发现该指令对应的机器码,同理可知retn的机器码为C3
右键选择edit,编辑
修改好后继续右键,应用修改
最后点击Edit > Patch program > Apply pathes to input file > OK
将补丁应用到输入文件中
这里推荐创建备份
打开新保存的程序,已经没有弹窗了
三、破登录入口
接下来进行登录的,当序列号输入错误时,弹出对话框”Sorry, The serial is incorrect"
这次我们换个方法,按Shift+F12 跳转到字符串窗口
可以很简单的找到他,双击跳转
按空格切换视图后有助于我们分析
如果上一个call函数,执行后ZF=1,不跳转;ZF=0,则跳转。
这里呢,我们采用暴力破的方式,这里呢不能让指令跳转,所以我们修改jnz指令,破坏它的判断条件,改为jz。或者用nop填充他,使其失效。这里我们继续演示和上面不一样的方法。
点击Edit > Patch program > Assemble
然后点击Edit > Patch program > Apply pathes to input file > OK
修改程序
运行程序
成功!
四、破序列号
根据上述操作,找到关键词Try Again!!,双击
双击黄色部分,找到被引用的地方
和上一个一样的关键词,咱们进行同样的操作。
成功!