吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17359|回复: 39
收起左侧

[原创] 自己加NoobyProtect次数限制的一个简单的CM的追码

  [复制链接]
cu629944 发表于 2011-5-3 14:53
本帖最后由 cu629944 于 2014-8-6 11:52 编辑

【文章标题】: 自己加NP次数限制的一个简单的CM的追码
【文章作者】: kinney
【软件名称】: 一个VC++的CreakMe
【软件大小】: 未加壳程序 200KB加壳程序1.25MB
【下载地址】: 自己搜索下载
【加壳方式】: NP的时间限制
【软件介绍】: 一个简单的CM~
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
未命名.jpg
保护加的这个。
因为加了NP的次数限制(我直接加了0次~呵呵~免得多打开几次,我嫌麻烦)载入后,程序停在这里
  0053B6D6 >  E8 18000000     CALL VC++_nps.0053B6F3
我们CTRL+G,输入CreateFileW这个函数,然后点击确定
7C810800 >  8BFF            MOV EDI,EDI
在这里下F2断点,然后F9运行,此时OD会有点卡(也不知道是不是我的电脑配置不好~),然后断下来了,观察堆栈
  0012F984   00524B92  /CALL 到 CreateFileW 来自 VC++_nps.00524B8F
  0012F988   0012FBD8  |FileName = "C:\Documents and Settings\Administrator\桌面\VC++.key"
  0012F98C   80000000  |Access = GENERIC_READ
  0012F990   00000001  |ShareMode = FILE_SHARE_READ
  0012F994   00000000  |pSecurity = NULL
  0012F998   00000003  |Mode = OPEN_EXISTING
  0012F99C   00000080  |Attributes = NORMAL
  0012F9A0   00000000  \hTemplateFile = NULL
  
此时我们取消断点,然后继续CTRL+G,来到CloseHandle这个函数,下断,F9运行。
  0012F99C   00524DB3  /CALL 到 CloseHandle 来自 VC++_nps.00524DB0
  0012F9A0   00000080  \hObject = 00000080 (窗口)
  
此时在堆栈窗口,右键==》跟随到反汇编窗口
  00524DB3    3B7D 08         CMP EDI,DWORD PTR SS:[EBP+8]
在00524DB3处F4运行到此处,然后F8单步走~
  00524D47    FF75 FC         PUSH DWORD PTR SS:[EBP-4]
  00524D4A    E8 02C9F8FF     CALL VC++_nps.004B1651
  00524D4F    FF75 FC         PUSH DWORD PTR SS:[EBP-4]
  
在这里的时候,我们在00524D4F 下F2 int3中断,F9运行,断下来后,在堆栈窗口==》 右键==》数据窗口跟随
在0018FA3C处,下硬件访问断点==》DWORD,并取消 00521B80处的F2断点,F9运行
  
  00525959    3918            CMP DWORD PTR DS:[EAX],EBX
  0052595B  ^ 74 D2           JE SHORT VC++_nps.0052592F
  0052595D    8B4D F3         MOV ECX,DWORD PTR SS:[EBP-D]
程序断在了00525959这里,我们删除硬件断点,然后F8单步跟踪,
00525A3B    64:0942 01      OR DWORD PTR FS:[EDX+1],EAX
  00525A3F    E8 F1E7F8FF     CALL VC++_nps.004B4235
  00525A44    3BC3            CMP EAX,EBX
  
当单步到00525A3F这里时,在005251B1下F2断点,断下后,再取消断点,并继续F8单步跟踪。
00525B90    E8 0B29F5FF     CALL VC++_nps.004784A0
  00525B95    8B40 10         MOV EAX,DWORD PTR DS:[EAX+10]
  00525B98    FF40 10         INC DWORD PTR DS:[EAX+10]
  00525B9B    E8 CDEDF8FF     CALL VC++_nps.004B496D
  00525BA0    3BC3            CMP EAX,EBX
  00525BA2    0F84 C6000000   JE VC++_nps.00525C6E
我们在00525BA2这里下断,F9~
断下后~我们发现,这个JE没有跳转,所以我们给修改为JMP~然后邮件复制到可执行文件==》
保存文件,并保存为Crack.exe 保存后,我们运行,发现提示“发生内部错误,请关闭调试器,
卸载监控工具”,可是我们没在OD里运行,所以,还有内存校验,我们OD载入,CTRL+G,输入
MessageBoxA,然后在断尾Retn处,下F2断点,并F9运行,当弹出错误提示框的时候,我们点击
确定,然后在RETN处断了下来,然后我们观察堆栈窗口,向下面翻,会看到这个~
  0012FE50   FFFFFFFF
  0012FE54  /0012FF70
  0012FE58  |00516B59  返回到 Crack.00516B59 来自 Crack.004A85A5
  0012FE5C  |00000001
  0012FE60  |0018F9D0
  0012FE64  |0043E7C9  Crack.0043E7C9
  0012FE68  |00526626  返回到 Crack.00526626 来自 Crack.004B9B1E
  0012FE6C  |00000001
  0012FE70  |00000004
  0012FE74  |00601B80
  0012FE78  |004000E0  ASCII "PE"
  0012FE7C  |00000000
我们看到在0012FE58和0012FE68有两个返回,我们一个一个反汇编窗口跟踪,第一个返回到没有有用信息
所以我们来反汇编窗口跟随第二个“返回到”。此时发现了有用信息哈~就是跳转,运气不错~
  0052661A   /0F84 99040000   JE Crack.00526AB9
  00526620   |50              PUSH EAX
  00526621   |E8 F834F9FF     CALL Crack.004B9B1E
  00526626   |E9 8E040000     JMP Crack.00526AB9
  0052662B   |E8 0E2BF5FF     CALL Crack.0047913E
  00526630   |6A E9           PUSH -17
  00526632   |35 0400006F     XOR EAX,6F000004
  00526637   |E6 74           OUT 74,AL                                ; I/O 命令
  00526639   |13EE            ADC EBP,ESI
  0052663B   |BB 6CE27017     MOV EBX,1770E26C
我们将0052661A这个JE给改成JMP强制跳转,然后右键==》保存
此时程序可以正常运行~到此,就将NP的时间限制去除掉了~接着我们追码~追码就简单了~
OD载入Crack.exe程序~F9运行起来,然后CTRL+G,跟随到00401000处,然后搜索ASCII码~
双击进入“破解成功”这个提示,因为我比较懒,我向上面翻,大略的看了一下子,就发现一个比较
00401BB2    8A10            MOV DL,BYTE PTR DS:[EAX]
  00401BB4    8A1E            MOV BL,BYTE PTR DS:[ESI]
  00401BB6    8ACA            MOV CL,DL
  00401BB8    3AD3            CMP DL,BL
  00401BBA    75 1E           JNZ SHORT Crack.00401BDA
  00401BBC    84C9            TEST CL,CL
  00401BBE    74 16           JE SHORT Crack.00401BD6
  00401BC0    8A50 01         MOV DL,BYTE PTR DS:[EAX+1]
  00401BC3    8A5E 01         MOV BL,BYTE PTR DS:[ESI+1]
  00401BC6    8ACA            MOV CL,DL
  00401BC8    3AD3            CMP DL,BL
  00401BCA    75 0E           JNZ SHORT Crack.00401BDA
  00401BCC    83C0 02         ADD EAX,2
  00401BCF    83C6 02         ADD ESI,2
  00401BD2    84C9            TEST CL,CL
  00401BD4  ^ 75 DC           JNZ SHORT Crack.00401BB2
  00401BD6    33C0            XOR EAX,EAX
  00401BD8    EB 05           JMP SHORT Crack.00401BDF
  00401BDA    1BC0            SBB EAX,EAX
  00401BDC    83D8 FF         SBB EAX,-1
  00401BDF    85C0            TEST EAX,EAX
  00401BE1    6A 00           PUSH 0
  00401BE3    75 0C           JNZ SHORT Crack.00401BF1
  00401BE5    68 54B14200     PUSH Crack.0042B154                      ; 恭喜你
  00401BEA    68 48B14200     PUSH Crack.0042B148                      ; 破解成功!
  00401BEF    EB 0A           JMP SHORT Crack.00401BFB
  00401BF1    68 3CB14200     PUSH Crack.0042B13C                      ; 破解失败
  00401BF6    68 34B14200     PUSH Crack.0042B134                      ; 重试?
  00401BFB    8BCD            MOV ECX,EBP
  00401BFD    E8 65700100     CALL Crack.00418C67
  00401C02    6A 00           PUSH 0
  00401C04    8BCD            MOV ECX,EBP
  00401C06    E8 B8770100     CALL Crack.004193C3
  00401C0B    5F              POP EDI
  00401C0C    5E              POP ESI
  00401C0D    5D              POP EBP
  00401C0E    5B              POP EBX
  00401C0F    83C4 50         ADD ESP,50
  00401C12    C3              RETN
所以我在00401BB8这里下F2断点,并输入假的注册名Nisycc和注册码11111111~点击确定,程序断下来了~是明码比较
在寄存器窗口的EAX寄存器窗口,发现了一串类似注册码的字符串
EAX 0012F88C ASCII "ab9016b-8cc142f-3d0a78c"
我们复制下来,关掉OD,输入注册名Nisycc和注册码ab9016b-8cc142f-3d0a78c,点击确定,看!提示成功了~算法我
没去分析,大家可以分析一下算法,写一个注册机给我哈~
--------------------------------------------------------------------------------
【经验总结】
  这篇破文只是想过NP的次数限制,所以我没去加DLL模拟~但是应该注意,解除次数限制的时候,包括了内存校验,所以也要
  去掉内存校验~呵呵~过NP的次数限制的方法很多~不止我这一种,还有像就利用MessageBoxA这个函数~大家可以去试试~如果
  大家没看懂的话,我会录一个视频的~至于这个CM的追码特别简单,大家去分析一下,并写一个注册机吧~呵呵~顺便说一下,NP
  的读取次数会生成一个文件,这个文件保存在C:\Documents and Settings\All Users\Application Data,删除掉,就可以去掉次数限制

--------------------------------------------------------------------------------
【版权声明】: 本文原创于Nisycc, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2011年05月03日 PM 02:38:18


  
PS:录了一个视频~可以看看哈~大牛就不用看了~由于我传附加传了很长时间没传上去,就放到网盘上了~呵呵~下载地址: http://dl.dbank.com/c0m3qyei08


自己加NP次数限制的一个简单的CM的追码.zip

1.65 MB, 下载次数: 168, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 7热心值 +7 收起 理由
honey + 1 好东西
Emil + 1 现在评分也不晚把 加油啊
eason0liu + 1 大牛要我顶的
zone0826 + 1 昨天没加上~今天给补上吧。
kelvar + 1 给牛人加点分。想到Nisy了、
qzy0549 + 1 很不才的东西
missviola + 1 感谢您的分析,[吾爱破解]有你更精彩!

查看全部评分

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

 楼主| cu629944 发表于 2011-5-3 14:54
自己沙发~嘿嘿~别跟我抢哦~大家给点热心和评分呗~
zone0826 发表于 2011-5-3 15:09
坦克总动员 发表于 2011-5-3 15:29
头像被屏蔽
zhi5231 发表于 2011-5-3 18:24
看了发现!原来可以这样子过掉的- -!
qzy0549 发表于 2011-5-3 19:23
楼主幸苦了 是个好教程
头像被屏蔽
zhi5231 发表于 2011-5-3 19:32
我承认
在这里的时候,我们在00524D4F 下F2 int3中断,F9运行,断下来后,在堆栈窗口==》 右键==》数据窗口跟随
在0018FA3C处,下硬件访问断点==》DWORD,并取消 00521B80处的F2断点,F9运行
- -!不明白!望下面的大牛简略说下

点评

呃...应该是我说的不明白吧~就是转换成HEX==》8进制~然后在下断,我说的是地址类型的~  发表于 2011-5-3 19:51
mycc 发表于 2011-5-3 19:33
哦,看不明白也顶一下

点评

哇塞~mycc大大~俺要加你为好友~  发表于 2011-5-3 19:49
qzy0549 发表于 2011-5-3 19:35
楼主 SE加壳的软件,他用SE壳生成的注册文件来验证 这个该怎么弄

点评

你说的是什么意思?用的SDK授权?  发表于 2011-5-3 19:37
kelvar 发表于 2011-5-3 19:45
Nisycc,呵呵。名字让我想到一个人。是不是为了过这个视频的限制

点评

呃...kelvar大大想到谁了~我只是一个菜鸟哦~嘿嘿~  发表于 2011-5-3 19:48
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-15 12:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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