新人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单步运行
这个程序即被我们破解 这是我写的第一个帖子,有很多不足指出希望各位大佬多多包涵和指正 恭喜成功 恭喜成功了,可以的{:1_921:} daoye9988 发表于 2023-4-18 18:50
恭喜成功了,可以的
谢谢支持
arct1cer 发表于 2023-4-18 18:52
谢谢支持
dll 搞吗 我这有一个 搞了几天没出来 加油,万事皆有头一回,谁不是从新手过来的。 谢谢大师分享,俺们菜鸟有福了! 谢谢分享 谢谢分享,菜鸟来学习了 666,支持下