吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7446|回复: 16
收起左侧

[原创] 初练160个CrakeMe程序之010

[复制链接]
海天一色001 发表于 2017-6-10 11:41
本帖最后由 海天一色001 于 2017-6-10 11:51 编辑

10CM,这仍是一个VB程序,难度是困难!
01.png
随意输入key,点击OK,弹出错误窗口:
02.png
PEID查壳,无壳:
03.png
第一步,爆破:导入OD,一直用搜索字符串的方法来练习,这次试一试按钮事件断点:在反汇编窗口中右键查找二进制字串或快捷键Ctrl+B”,输入“816C24”,确定:
04.png
来到004018A8处,在下一句跳转指令上下断点,再“Ctrl+L”查找下一个,本程序中只有一个OK按钮,所以没找到其他的按钮事件:
05.png
F9运行程序,输入注册码“1234567890”,点“OK”,程序在此处中断。F8一次,程序来到00401E20处,这里就是OK按钮事件的段首了。向下拉滚动条,很快就在00402090处看到了UNICODE字符串"RiCHTiG !"成功的意思;再向下,看到了0040214A处的失败提示UNICODE "LEiDER Falsch ! "。那么很轻松地在00402053处找到了je Andréna.00402119”这条跳过成功的指令,nop掉!
06.png
试一试,成功了,将爆破后的程序存为Andrénalin.3_nop.exe
07.png
步,追码:因为要找注册码和算法,所以重载程序入ODF9运行,程序中断于跳转处。F8单步走,至00401EDE处,将假码存入eax中;
[Asm] 纯文本查看 复制代码
00401EDE   > \8B45 A8       mov eax,dword ptr ss:[ebp-0x58]          ;  取假码

继续向下,感觉和上一个CM代码很相似。然后到00401F68地址至00402026处又是一个用输入的注册码计算的循环,运行到0041FA9处时,取第1个字符“1”; 下一句0041FAA处运行的函数是eax=0x31;继续向下,eax=eax+0xA=0x3B
08.png
继续向下,运行到00401FC4处时,函数将数值转换成字符“;
10.png
在堆栈窗口中的0012F45C处也找到了“;”,下面的UNICODE1”应该是第1个字符的意思吧:
11.png
F8向下,第二次循环时,以上两个地址处分别变成了“<”和“2”;在堆栈中向下查看了一下,又发现在0012F4B4处的字符是“;<”了!反复运行了几次,0012F4B4处的字符随着循环次数增加而增加,直到循环结束,结果如下:
12.png
这一个循环的作用是取假码每一个字符的16进制ASCII值加上0xA,,得到的结果再转换成新的字符,我输入的是“1234567890”,循环结束后得到的结果是";<=>?@ABC:"10个字符。继续向下到0040204A处,这里__vbaVarTstEq函数应该是真假码对比,相等则返回eax=-1,不等则eax=0 。根据经验,猜测就是假码算出来的值与UNICODE "kXy^rO|*yXo*m\kMuOn*+"对比。也就是说,真码算出来的结果等于这一个"kXy^rO|*yXo*m\kMuOn*+"
[Asm] 纯文本查看 复制代码
00402034   .  50            push eax                                 ; /var18 = 0012F4AC
00402035   .  51            push ecx                                 ; |var28 = 0012F434
00402036   .  C785 5CFFFFFF>mov dword ptr ss:[ebp-0xA4],Andréna.0040>; |UNICODE "kXy^rO|*yXo*m\kMuOn*+"
00402040   .  C785 54FFFFFF>mov dword ptr ss:[ebp-0xAC],0x8008       ; |
0040204A   .  FF15 40414000 call dword ptr ds:[<&MSVBVM50.__vbaVarTs>; \__vbaVarTstEq
00402050   .  66:85C0       test ax,ax
00402053      0F84 C0000000 je Andréna.00402119

仔细观察,那么注册码的算法就应该是从"kXy^rO|*yXo*m\kMuOn*+"开始取每个字符的ASCII值减去0xA,结果再转换成字符:VB代码如下:
[Visual Basic] 纯文本查看 复制代码
Private Sub Start_Click()
    Code = "kXy^rO|*yXo*m\kMuOn*+"
    LenCode = Len(Code)
    Rusult = ""
    For i = 1 To LenCode
        Codice = Asc(Mid(Code, i, 1)) - 10
        Rusult = Rusult & Chr(Codice)
    Next
    Text1.Text = Rusult
End Sub

第三步,汉化:
因为论坛的大神肥牛指出了有的软件运行时会判断自身是否被修改,或者某个英文提示作为注册码生成的密钥等等,汉化都会把这些破坏掉。建议破解前不要做汉化操作。而我对原程序进行汉化是因为自己用中文版软件界面习惯了,对外语界面感到很不舒服,所以在破解的同时顺便练习一下,不是重点内容,可能在原来的练习过程中有点喧宾夺主了吧。所以将汉化放在最后一步。VBExplorer打开原Andrénalin.3.exe程序,在左下的属性栏中修改窗体的名字为CM010-DIFFICULT(海天一色汉化);
13.png
点击属性栏的向下三角符号,更改Label1Caption属性从“Key”到“注册码”;
14.png
再点击“查看”-“查看字符串”:
15.png
在右侧字符串窗口中修改相应的提示信息如下,然后点击运行,在文本框中随意输入内容,点击OK按钮,程序界面已基本汉化了。
16.png
根据假码时的情况,未修改的这串字符正如肥牛大神所说是注册码的密钥,不能乱改!汉化完成!VBExplorer保存时没有另存为这一选项,只能保存为原文件名。我是将保存后的文件重命名为CM010.exe,然后再将VBExplorer生成的一个备份文件Andrénalin.3.exe.backup再改回原程序名的。
虽然标题上说这个CM是Difficult(困难)的,但因为已练习了作者的两个CM,对VB的API函数也有了一定的了解掌握,所以这个CM的练习时间反而缩短了不少!
  附件 010.rar (19.58 KB, 下载次数: 13) 010.rar,含CM原程序、爆破程序及汉化程序CM010、汉化后的爆破程序CM010_nop010注册机。
百度链接是:http://pan.baidu.com/s/1skMkJY9 密码: 86pm160CM、我已练习过的前10crackme程序都在里面。  

免费评分

参与人数 9吾爱币 +15 热心值 +9 收起 理由
Sakura_52pojie + 1 + 1 用心讨论,共获提升!
fu90 + 1 + 1 已答复!
wuhua2009 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
WYWZ + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
f250907 + 1 + 1 用心讨论,共获提升!
夏雨微凉 + 1 + 1 楼主加油!坚持下去!
肥牛 + 1 + 1 用心讨论,共获提升!
Sound + 6 + 1 已经处理,感谢您对吾爱破解论坛的支持!
523740194 + 2 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pwp 发表于 2017-6-10 12:04
牛人分析就是牛
Pingerfy 发表于 2017-6-10 12:51
zhengsidie 发表于 2017-6-10 12:56
夏雨微凉 发表于 2017-6-10 22:58
楼主加油!坚持下去!
f250907 发表于 2017-6-11 00:25
不错,支持下
yhxing 发表于 2017-6-11 07:34
详细~看了后能懂,再出点,谢谢大神了~
wuhua2009 发表于 2017-6-12 06:24
谢谢楼主 ,希望多发些这种贴子,我们小白也学习学习。
lshaiwo 发表于 2017-6-12 12:14
很详细的呢
儒雅小白鼠 发表于 2017-6-12 19:06
不错 谢谢分析 来支持一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 16:09

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表