[原创]初学破解,分享寻找注册码过程

本帖最后由 lmze2000 于 2015-4-27 14:18 编辑

52Pojie的官方入门教学培训,第一期不有赶上。就在论坛里面先自学基础的教程,我算是个半新手,边自学边摸索,多少有些小收获。刚才看见群里有人求一个软件的破解,

就试着来偿试一下,结果还碰对了,把过程写下来,分享给和我一样在辛苦学习的同学们。-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第一次在52上发贴分享自己的喜悦,破解这东西看着给人高大上很神秘的,很多人在学的过程中,没有汇编的基础。看教程没有搞定就放弃了。

咱们刚开始就找容易好破的软件,,别给难倒吓跑:)

补充说明下:替换机器码那里,那个就是在之前的断点处,向上翻,一般是看汇编的代码里面有Local.2这样的语句,就试着下断,这表示有变量的赋值过程。(备注,local后面的数字不一定是2.)一般变单步F8,变查看寄存器值的变化。

我是在向上追踪出去一大段后才发现的,先是发现了注册码,然后又往上追踪,看见了机器码。由于不会写内存注册机,就用笨方法,看到机器码出现在EAX寄存器里面,就手动转到数据区域那里,修改机器码的数据。

后记,后来在论坛上看见用Keymake制作内存注册机的方法,也比较简单,找到push eax那条语句,,把有机器码的地址记下来,然后中断1次,长度1

【破解工具】 OllyDbg

【软件名称】 联系人生成器2.0

【下载地址】 文件来自群共享, 上传到百度云地址:http://pan.baidu.com/s/1eQxVtDo

【加壳信息】 无壳

【软件简介】 看样子是生成各地手机信息的一个软件,生成VCF格式的。

1、使用Peid查壳,显示无壳。使用OD载入软件,程序停留在入口处(OEP),根据所学,常规套路是用查找--->搜索Ascii字符串,看有没有什么注册成功、注册失败之类的提示。

OD载入.jpg (121.5 KB, 下载次数: 53)

下载附件

2015-4-26 19:22 上传

2、在汇编区右键,在弹出的菜单中选择中文搜索引挚-->搜索Ascii码,在搜索到的字符串中寻找注册成功、注册失败的提示信息。根据提示信息的位置,来寻找程序的关键跳转地址,

用来爆破掉,或者找出注册码。由于这个练手的程序是明码比较,比较适合刚学破解的新生,正好拿来让我们折磨:)

搜索字符.png (93.19 KB, 下载次数: 31)

下载附件

2015-4-26 19:32 上传

搜索字符2.png (51.11 KB, 下载次数: 23)

下载附件

2015-4-26 19:32 上传

上面截图就是查找字符串的位置。

3、转到汇编界面,在注册成功、注册失败处前2段地址处进行下断点,(按F2),2处地址分别为

004084CF |. E8 2C1E0000 call 联系人生.0040A300

004084D4 |. 83C4 04 add esp,0x4

004084D7 |> 68 01000100 push 0x10001

004084DC |. 68 C61D0106 push 0x6011DC6

004084E1 |. 68 C51D0152 push 0x52011DC5

004084E6 |. 68 04000080 push 0x80000004 ; 注册成功的提示

004084EB |. 6A 00 push 0x0

004084ED |. 68 A8C64C00 push 联系人生.004CC6A8 ; 温馨提示:

----------------------------------------------------------------------------------------------------------

00408540 |. 83C4 1C add esp,0x1C

00408543 |. E9 45000000 jmp 联系人生.0040858D ; 在这里看见有个jmp无条件跳转,是跳过失败的

00408548 |> 68 01000100 push 0x10001 ; 这里有一个从上方过来的大跳

0040854D |. 68 C61D0106 push 0x6011DC6

00408552 |. 68 C51D0152 push 0x52011DC5

00408557 |. 68 04000080 push 0x80000004

0040855C |. 6A 00 push 0x0

0040855E |. 68 A8C64C00 push 联系人生.004CC6A8 ; 温馨提示:

00408563 |. 68 01030080 push 0x80000301

00408568 |. 6A 00 push 0x0

0040856A |. 68 30000000 push 0x30

0040856F |. 68 04000080 push 0x80000004

00408574 |. 6A 00 push 0x0

00408576 |. 68 BEC64C00 push 联系人生.004CC6BE ; 注册失败!

0040857B |. 68 04000000 push 0x4

----------------------------------------------------------------------------------------------------------

注册下断.png (65.48 KB, 下载次数: 29)

下载附件

2015-4-26 19:41 上传

注册.png (106.14 KB, 下载次数: 27)

下载附件

2015-4-26 19:52 上传

4、下完断点,按F9试着跑一下程序,,在点生成VCF的时候,跳出注册窗口,点击注册,程序断在了00408548处,

同时发现EBX寄存器有那么一串Ascii码,长得好像注册码呀,把它复制出来看看。

0019EB80 052A2FE8 ASCII "77988D0363808437E49133371207B753"

EBX寄存器.png (67.73 KB, 下载次数: 23)

下载附件

2015-4-26 19:50 上传

5、再一次的F9运行起程序,将刚才的那串 77988D0363808437E49133371207B753 输入进注册码中,点一下注册看看效果。

成功1.png (84.8 KB, 下载次数: 23)

下载附件

2015-4-26 19:56 上传

成功2.png (64.31 KB, 下载次数: 22)

下载附件

2015-4-26 19:56 上传

看来那串是真正的注册码了。虽然感觉这个软件注册的比较简单,可是新手就应该从这样简单的小软件来练手,增强信心,一点点的成长起来。

由于不会汇编,也看不懂算法,不知道这个注册码是怎么计算出来的。又试着在注册失败上方的一个大跳转处,往前跟踪了一下,分别发现了2个关键Call,

一个是生成机器码,一个是生成注册码的Call,不会写注册机,就用笨方法,找到生成机器码的Call,下一条语句,然后修改EAX的值,来根据修改的机器码生成注册码。

00408206 |. B8 14504B00 mov eax,联系人生.004B5014

0040820B |> 50 push eax

0040820C |. 68 01000000 push 0x1

00408211 |. BB 70B34000 mov ebx,联系人生.0040B370

00408216 |. E8 D9200000 call 联系人生.0040A2F4

0040821B |. 83C4 10 add esp,0x10

0040821E |. 8945 F8 mov [local.2],eax

00408221 |. 8B5D FC mov ebx,[local.1]

00408224 |. 85DB test ebx,ebx

00408226 |. 74 09 je X联系人生.00408231

00408228 |. 53 push ebx

机器码.png (65.45 KB, 下载次数: 33)

下载附件

2015-4-26 20:19 上传

简短无含量的小破解心得分享到这里,希望这成功的第一次,为接下来的努力打下基础:)