• 标 题:初学者问题:一个crackme,必须输入正确的序列号,提交按钮才有效,请大家指点一下思路 (空)
  • 作 者:1212
  • 时 间:2001-2-24 21:26:26

http://go3.163.com/~gfcrack/crackme/aLoNg3x.1.zip

  • 标 题:有意思! (907字)
  • 作 者:1212
  • 时 间:2001-2-24 23:44:38

看看IDA反汇编的结果:
//---------------------------------------------------------
        dd offset sub_442C78
aCodicechange    db 12,'CodiceChange'
        db 0Eh,    0

        dd offset sub_442D64
aOkclick            db 7,'OkClick'
        db 11h,    0

        dd offset sub_442E04
aNomechange    db 10,'NomeChange'
        db 14h,    0

        dd offset sub_442EA8
aCancellaclick    db 13,'CancellaClick'
        db 11h,    0
//------------------------------------------------------------
上述是控件及其回调函数的地址,即:

函数名            函数入口地址    函数的意义
CodiceChange( )    442C78          当你修改了注册码时要调用此函数
OkClick( )        442D64          当你点击OK按钮时要调用此函数
NomeChange( )      442E04          当你修改了名字时要调用此函数
CancellaClick( )  442EA8     当你点击Cancel按钮时要调用此函数

在上面4个函数地址处设断点,然后稍微跟一下,你就会看到它是如何判断注册码的了,但跟你的操作顺序有点关系 :)


BF

  • 标 题:没啥技巧,Delphi/C++ Builder中VCL控件的事件处理就是这样的 (226字)
  • 作 者:1212
  • 时 间:2001-2-25 13:24:09
  • 链 接:http://bbs.pediy.com

你每输入一位注册码它都要判断一次,所以一定是处理了TEdit的OnChange( ),找到这个函数就有眉目了。

这不算zen吧

最好有个工具能把Borland的编译器生成的EXE文件中的无用的字符串去掉,这样能够增加破解的难度,就象Unix上的strip一样。

BF

  • 标 题:感谢1212!!! (1千字)
  • 作 者:THK
  • 时 间:2001-2-25 13:57:19
  • 链 接:http://bbs.pediy.com

当我遇到实时比较的程序时总感到无处下手。
首先感谢楼上的1212大侠。
闲话不说,let's go!
bpx 442c78
g

016F:00442A93  MOV      ECX,[EBP-04]    //这里开始由用户名生成一个数A
016F:00442A96  MOVZX    ECX,BYTE [ECX+EAX-01]
016F:00442A9B  MOV      ESI,[EBP-04]
016F:00442A9E  MOVZX    ESI,BYTE [ESI+EAX]
016F:00442AA2  IMUL    ECX,ESI
016F:00442AA5  IMUL    ECX,EAX
016F:00442AA8  ADD      EBX,ECX
016F:00442AAA  INC      EAX
016F:00442AAB  DEC      EDX
016F:00442AAC  JNZ      00442A93  //不跳,完成用户名处理
016F:00442AAE  MOV      EAX,[EBP-08]
016F:00442AB1  CALL    00407670  //这里由注册码生成一个数B
016F:00442AB6  SUB      EBX,EAX  //A-B
016F:00442AB8  CMP      EBX,029A  //A-B=29a
016F:00442ABE  JNZ      00442AC4  //跳就死
016F:00442AC0  MOV      BL,01
----------------------------------------------------------
//注册码的处理部分
016F:004029AA  SUB      BL,30
016F:004029AD  CMP      BL,09
016F:004029B0  JA      004029DE
016F:004029B2  CMP      EAX,EDI
016F:004029B4  JA      004029DE
016F:004029B6  LEA      EAX,[EAX+EAX*4]  //eax=eax+eax*4
016F:004029B9  ADD      EAX,EAX   
016F:004029BB  ADD      EAX,EBX
016F:004029BD  MOV      BL,[ESI
016F:004029BF  INC      ESI
016F:004029C0  TEST    BL,BL
016F:004029C2  JNZ      004029AA
------------------------------------------------------------
还有一点
016F:00442A5A  XOR      EAX,EAX
016F:00442A5C  PUSH    EBP
016F:00442A5D  PUSH    DWORD 00442AE5
016F:00442A62  PUSH    DWORD [FS:EAX]
016F:00442A65  MOV      [FS:EAX],ESP
016F:00442A68  MOV      EAX,[EBP-04]
016F:00442A6B  CALL    00403A34
016F:00442A70  CMP      EAX,BYTE +05    //用户名是否大于5位
016F:00442A73  JNG      00442AC8      //少于则死
016F:00442A75  MOV      EAX,[EBP-04]


整理:
  name :THK123
  sn:  49763
                                                  THK