飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

楼主: 黑夜彩虹

Crackme01

[复制链接]

该用户从未签到

发表于 2007-3-7 17:01:02 | 显示全部楼层
原帖由 海风月影 于 2007-3-7 16:26 发表


这个crackme比较搞笑

00453CA5   .  8B45 EC       mov     eax, dword ptr ss:[ebp-14]                      ;  注册码
00453CA8   .  E8 07FDFFFF   call    CrackMe0.004539B4                               ;  写内存,修改下面5个字节
00453CAD      B8 143D4500   mov     eax, CrackMe0.00453D14                          ;  ASCII "ok"
00453CB2   .  E8 CD36FDFF   call    <CrackMe0.D7.Dialogs.ShowMessage(AnsiString);>

原型是:

00453CA8    E8 07FDFFFF     call    CrackMe0.004539B4
00453CAD    EB 08           jmp     short CrackMe0.00453CB7
00453CAF    90              nop
00453CB0    90              nop
00453CB1    90              nop
00453CB2    E8 CD36FDFF     call    <CrackMe0.D7.Dialogs.ShowMessage(AnsiString);>
00453CB7    33C0            xor     eax, eax

构造精巧,不过,有一份正版就能破解了


感觉天下一家,在fonge's crackme10.X中有类似代码.看来这种方式是加密成长的必经之路了!
PYG19周年生日快乐!

该用户从未签到

发表于 2007-3-7 17:10:54 | 显示全部楼层
原帖由 黑夜彩虹 于 2007-3-7 16:58 发表


作用:动态改变程序运行的罗辑



怎么个动态法?
我用过

  1. 0045486E   . /75 0A         jnz     short 0045487A               
  2. 00454870   . |C705 9C4A4500>mov     dword ptr [454A9C], 000003EB
复制代码

动态在地址45A9C处写入000003eb

而549那段代码我至今没看明白
加一个详细的功能调用注释吧!
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-3-7 17:19:45 | 显示全部楼层
老实说,549那东东我也不是很清楚,只会用。。。。

下面引用他的原话:

某天,有个想法,今天实现之
想法很简单,在程序启动的时候,读一个补丁文件,用来动态改变程序运行的逻辑

补丁文件格式如下

address1,patch code1

address2,patch code2

……

由于寻找address比较麻烦,尤其是代码删改以后,address都要重算,为了解决这个问题,采用了自动生成address的方法,即:得到某代码的offset,用前面写的geteip函数,通过这个eip,加上一个相对便移量,就得到了patch address,由于const是保存在栈上的,因此增删const offset,对程序没有影响
PYG19周年生日快乐!

该用户从未签到

发表于 2007-3-7 17:20:39 | 显示全部楼层
:lol:

原帖由 不懂算法 于 2007-3-7 16:00 发表
你去用我在crackme版贴那个注册码,然后跟踪就知道怎么回事了


也不会知道是怎么回事,因为我跟本没有往算法call里面走!;)

谢谢兄弟指点!


_____________________________________________________________
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-3-7 17:25:42 | 显示全部楼层
往算法Call走进,也是白走,因为根本是一个陷井~~

就是要引诱Cracker走进去的~~:lol:
PYG19周年生日快乐!

该用户从未签到

发表于 2007-3-7 20:32:24 | 显示全部楼层
原帖由 黑夜彩虹 于 2007-3-7 17:25 发表
往算法Call走进,也是白走,因为根本是一个陷井~~

就是要引诱Cracker走进去的~~:lol:


所以还要后面继续走!



  1. 固定注册码前8位指向SMC的地址,后面是参与patch的data,而这个data是经过运算得到的

复制代码



;)
彩虹也被549忽悠了


  1. 设a='长度为25位的字串'
  2. 生成值定值b=md5(a)

  3. 然后我们找一段关键代码code,
  4. 把这段关键code每一位与这个md5(a)的某一位异或,得出data,(这个时候要逆回code只要将data的每一位和b的相应位xor就可以了)

  5. 编程的时候只需要把data写入到软件中去就可以了,
  6. 然后要求输入一个值N
  7. 注册成功即是data xor md5(N)相应位来还原code并执行这段code代码,
复制代码


这个code未知,想要追出这个md5(n)难啊,而要找出这个N更难!
那真的做到无法破解了(549就是这个意思)/fad

就是因为这个原因,所以在出现现在的对称算法,签名算法,
才有所谓的一机一码的概念!

当然,549的这种加密结构很漂亮。
PYG19周年生日快乐!

该用户从未签到

发表于 2007-3-7 20:48:04 | 显示全部楼层
学习。。。。。。
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-3-8 08:14:29 | 显示全部楼层
原帖由 caterpilla 于 2007-3-7 20:48 发表
学习。。。。。。


惊涛兄,不要光学习。。,要有行动啊,期待兄弟的加入~~~:lol:
PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2016-4-4 16:17
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-3-8 09:39:49 | 显示全部楼层
    ---------------------------
    Debugger Exception Notification
    ---------------------------
    Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00404272 in module 'Project1.exe'. Read of address 0000F500'. Process stopped. Use Step or Run to continue.
    ---------------------------
    OK   Help   
    ---------------------------
    出来ok后,又弹出这个错误了。把你的源代码里像if PatchItem <> '' then
    []里加个空格 :PatchItem[i ]不然代码就丢失了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-3-8 11:00:11 | 显示全部楼层
    是哪种丢失,delphi内置的优化吗?
    我也老是遇到delphi内置的优化把想要的代码del了
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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