【从0开始的逆向学习--arct1cer加密与解密学习笔记,破解第一个程序】

大家好,这里是新人arct1cer。刚学到加密与解密基础操作的破解第一个程序,在明白原理后非常兴奋发帖子,这个帖子也算是我的个人笔记,今后我也会发更多的学习笔记在账号上。在写帖子的时候发现自己还有很多不足,希望各位大佬发现不足之处请提出,我会改正的。^—^ 首先打开OllyDbg并且打开程序 


在windos中,只要api函数被使用,想隐藏东西是比较困难的。我们应当以api函数为切入点
这是一个调用文本的函数
所以我们猜测可能是 GetDlgItemTextA 或 GetDlgItemTextW
在ascII版本中为GetDlgItemTextA 而在unicode版本中为 GetDlgItemTextW
我这个是ascII版本的 我们使用ctrl+g 进行搜素

我们在这里按f2下一个断点然后运行一遍程序
f8单步步过,当我们听到蹬的一声的时候发现显示序列号错误 


我们再次运行程序来到断点处,在这里到call时可以按f7进入原函数进行查看,这一部分《加密与解密》有对这一部分详细的解释
但我们需要的并不是这些,这只是一个验证程序,我们只需修改返回值就好,我们按ctrl+9返回,边按f8单步过边查看系统窗口的提示
当我们运行到这里时发现这是我们所输入的数据,且接着运行发现下面有我们的断点。


这里补充一个知识点:大部分数据是储存在eax里的,这里我们对汇编代码进行解析发现这个call引用了上面几个指令并且在je的时候进行一个判断并且跳转
{je 表示等于就跳转
je 指令【Jump if Equals】在ZF被置位时跳转。je 是 jz 【Jump if Zero】的别名
test 指令用于两个操作数的按位AND运算,并根据结果设置标志寄存器,结果本身不会写回到目的操作数}
tips:大括号这一段是我从网上查来的资料(我在学汇编的时候并没有记下来所有的标志寄存器,只是草草带了一眼)^-^指令执行后,其结果是否为0,若结果为0,那么ZF=1;如果不为0,那么ZF=0我们找到右上方将双击zf标志寄存器将zf的值改为0 


我们这时候再进行f8单步运行,听到登的一声查看就成功了


这个程序即被我们破解  这是我写的第一个帖子,有很多不足指出希望各位大佬多多包涵和指正

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值