本帖最后由 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 上传
简短无含量的小破解心得分享到这里,希望这成功的第一次,为接下来的努力打下基础:)