新手破解练习Crackme160之099 - Krypton
这个程序无法直接在winxp以上系统运行, win98下可以直接运行~
OD加载正常~ 程序第一行就是从命令行读取内容, 然后判断最后一位是不是tab(0x9), 所以我们在菜单->调试->参数, 这个项目中添加一个tab符号, 不能直接输入\t, 会被当前\和t两个字符, 可以在记事本上先打一个tab(" ")键, 再复制进去~
这样, 程序可以进入正常程序~并在注册表创建一个值 HKEY_LOCAL_MACHINE\Software\Cripton\v1.0\Yado says: Hi gui! ;)值是"12345",
继续运行到0040185D处 int 0x68异常退出~
接下来就是就看solly大佬表演了~ (我就完全不会了)
- 00401021处 je改为 jmp跳过命令行输入验证~
- 程序运行到0040185D,点击下一行右键->此处为新EIP,意思是直接让程序从这行开始执行,不执行上一行,直接跳过~ 既然是跳过,是不是直接把上一行nop掉也是一样的呢? 试了是一样的_ (大佬用的方法当然得高级一点)
- 此时不继续向下执行了,我们ctrl+G, 输入00401054,返回到这行的位置,将这行nop掉,因为跳转过去的代码是解密程序段,我们上面已经运行到0040185D处了,密文已经解完了,我们已经看到了明文程序,另存后我们不需要再解密了,所以就不需要再跳进去了,直接运行到直正的代码区(后记:因为解密完程序还有一个赋值操作00401865 mov byte ptr ds:[0x40234B], 0x63这个,所以我们把这句搬到nop掉的这行来,即00401054这行改为 mov byte ptr ds:[0x40234B], 0x63)
- 再将所有的 retn 0xC改为 retn 0x10 (有6处,用ctrl+F,搜索retn 0xC即可找出)
上面4步操作完后另存文件,此时程序可以正常运行了,在win10下也可以打开了
上面修改完后,F9继续运行便看到了程序的界面,有三个按钮,注册,介绍 和 退出
程序既然可以正常运行了,那我们接下来试下自己玩玩~ 不能一直依靠大佬_ 自己也得动动小手~
OD重新载入修正后程序,F9运行~ 搜索文本没看到什么有用的关键词,前面我们修改了6个retn 0xC, 说明有6个子方法,我们分别在它们的入口处下个断点,ctrl+F 搜索 retn 0x10(不再是0xC了哈,已经被我们改了), 对应的入口如下:
1). 0040105A
2). 004010AF
3). 004010BD
4). 004010D6
5). 004010F4
6). 004011DB
我们点注册按钮,成功在3). 004010BD处停下,然后就跳转到5). 004010F4去了,所以这个5).才是注册方法入口,看着一大堆的代码应该就是关键算法处了,F8走起~ 一步一步,一步一步~ 最终我们就把算法分析出来了:
1). [402372] = 0x63 xor 0x1A = 0x79 (y)
2). [402373] = 0x63 xor 0x02 = 0x61 (a)
3). [402374] = 0x63 xor 0x4D = 0x2E (.)
4). [402375] = 0x63 xor 0x07 = 0x64 (d)
5). [402376] = 0x63 xor 0x0C = 0x61 (o)
得到文件名ya.do并打开文件,获取文件大小是否为0x15字节,如果不是提示注册失败,所以我们在打开前先创建好文件,随便先写入21个字,程序打开文件并读取全部内容(21个)然后便一个个字对比,分别判断是否为: WriteYado@hotmail.com, 所以我们反过来得到文件内容为(16进制):37 12 09 14 05 39 01 04 0F 20 08 0F 14 0D 01 09 0C 4E 03 0F 0D (每个dh的值即是)
1~160每个破解过程,在吾爱破解论坛都有高手破解过了,也有整理好现成的, 我这边主要就是自己动手操作的过程,与他们的不太一样
附上高手们的连接: 点击前往查看
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载
新人入门教程"玩玩破解,写给新人看" 点击前往查看
我就是从这里开始的,对我这样的小白感觉超级友好~
下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~