Replace

查壳没有壳
用od打开
中文搜索引擎,找到correct的位置
这里写图片描述
发现有两个跳转,设上断点,然后运行,弹出输入框,先在输入框中随便输入123456,check,
然后就到了0040106C,然后单步往下执行,跳转到了00404690,继续单步往下执行
这里写图片描述
发现运行到004046A9程序就崩,重新载入到这个地方之后F7,进入函数
这里写图片描述
也就是将0x90赋值给eax这个地址,然后百度了一下0x90,查到

NOP指令即“空指令”,在x86的CPU中机器码为0x90(144)。执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令。所以NOP指令自然也会占用执行一个指令的CPU时间片。

即是将eax这个地址的内容换成nop
然后004046AE这行是eax+1
然后下一个call是将刚刚换的那个地址+1也换成nop
然后我们再看刚刚的两个跳转,第一个跳转跳到下面之后再跳到第二个跳转,第二个跳转又跳过了输出的correct!,也就是说我们不能让第二个跳转执行,所以应该把第二个跳转改成nop,eax应该是401071
这里写图片描述
所以接下来看eax是怎么得到的
这里写图片描述
这个地方是将0x4084d0处的内容给eax,将地址转到4084d0,其内容是6017E80B
这里写图片描述
然后右键查找所有常量
这里写图片描述
这里写图片描述
转到初始
这里写图片描述
进入call函数,F7单步往下执行
这里写图片描述
下面的地址转到4084D0时刻关注是怎么变换的
然后单步执行
发现运行到db 81之后4084D0就由输入变成了6017E809,然后后面还有两个+1,所以最后出来的是6017E80B,
百度db指令是伪操作指令,但是还是没看懂是怎么由输入转换成的
重新载入将输入换成0
再重新看这个函数,发现到db 81后,4084D0变成了601605C9.执行完这个函数后,是601605CB
这里写图片描述
然后发现6017E80B-601605CB就等于输入的1314
也就是说601605CB+?=100401071
所以算出来结果为2687109798
输入后执行
这里写图片描述
完成

未解决的问题:db 81 那一行命令是如何操作的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值