- UID
- 74897
注册时间2014-4-16
阅读权限10
最后登录1970-1-1
周游历练
TA的每日心情 | 开心 2016-5-24 12:54 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
本帖最后由 mod5689 于 2014-6-30 00:47 编辑
纯代码的东西估计没几个人愿意去看,先说下大概流程
启动时:先看\user\renamefile.txt 文件是否存在,不存在标题自然是未注册,同时功能限制的全局变量赋值0.
若文件存在,验证其保存的机器码、注册码与程序计算的两项是否都相等,不一样则未注册版,功能限制全局变量赋值0;
若一样则注册版,功能限制全局变量赋值-1
注册时:与启动时一样,先检查文件是否存在,内容是否正确。若都正确刚显示 已注册!但是功能限制的全局变量未重新赋值。
若不正确,让你输入注册码再进行验证。
功能限制:检查全局变量的值,-1代表已注册,0代表未注册同时开启限制。
无代码无真相
启动时验证流程:
004C63B4 . E8 87FDFFFF call 004C6140 ; 判断 \文件批量重命名4.20\user\renamefile.txt 是否存在
004C63B9 . 0FBFD0 movsx edx, ax ; ax=-1 为文件存在
004C63BC . 85D2 test edx, edx
004C63BE . 0F84 6A030000 je 004C672E ; 文件不存在直接跳向004C679A push 00491E20 ; / 未注册版
004C6411 . 8B4D D4 mov ecx, dword ptr ss:[ebp-2C] ; 读取文件的内容 (UNICODE "123 1111-1111-1111-1111")
004C64F6 . 8BD0 mov edx, eax ; 读取机器码eax:(UNICODE "123")
004C65E4 . 8BD0 mov edx, eax ; 程序自己计算的机器码eax=001922DC, (UNICODE "0--0-")
004C65F0 . FF15 F4104000 call near dword ptr ds:[<&MSVBVM60.__> ; 比较读取和程序自己计算的 机器码是否一样
004C65FF . 8B4D D8 mov ecx, dword ptr ss:[ebp-28] ; 读取的注册码:[ebp-44](UNICODE "1111-1111-1111-1111")
004C6602 . 51 push ecx
004C6603 . E8 98020000 call 004C68A0
004C6608 . 8BD0 mov edx, eax ; 程序计算的注册码 eax=00191A3C, (UNICODE "0000-0000-0000-0000")
004C660A . 8D4D BC lea ecx, dword ptr ss:[ebp-44]
004C660D . FF15 BC124000 call near dword ptr ds:[<&MSVBVM60.__> ; MSVBVM60.__vbaStrMove
004C6613 . 50 push eax
004C6614 . FF15 F4104000 call near dword ptr ds:[<&MSVBVM60.__> ; 比对 读取和计算的注册码
004C6621 . 66:23F0 and si, ax ; si 为机器码比对结果, ax为注册码比对结果
004C6624 . 66:8975 80 mov word ptr ss:[ebp-80], si ; si:最终校验结果
004C6628 . 8D55 BC lea edx, dword ptr ss:[ebp-44]
004C662B . 52 push edx
004C662C . 8D45 C0 lea eax, dword ptr ss:[ebp-40]
004C662F . 50 push eax
004C6630 . 6A 02 push 2
004C6632 . FF15 50124000 call near dword ptr ds:[<&MSVBVM60.__> ; MSVBVM60.__vbaFreeStrList
004C6638 . 83C4 0C add esp, 0C
004C663B . 0FBF4D 80 movsx ecx, word ptr ss:[ebp-80] ;最终校验结果
004C663F . 85C9 test ecx, ecx
004C6641 . /0F84 E2000000 je 004C6729 ; 启动时验证机器码、注册码 确定是不是注册版
004C6647 . C745 FC 0C000>mov dword ptr ss:[ebp-4], 0C
004C664E . 66:C745 D0 FF>mov word ptr ss:[ebp-30], 0FFFF ; 是注册版的话就赋值-1, 功能限制 全局变量
004C6654 . C745 FC 0D000>mov dword ptr ss:[ebp-4], 0D
004C665B . |833D 7C405200>cmp dword ptr ds:[52407C], 0
004C6662 . |75 1C jnz short 004C6680
004C6664 . |68 7C405200 push 0052407C
004C6669 . |68 08C84800 push 0048C808
004C666E . |FF15 2C124000 call near dword ptr ds:[<&MSVBVM60.__> ; MSVBVM60.__vbaNew2
004C6674 . |C785 40FFFFFF>mov dword ptr ss:[ebp-C0], 0052407C
004C667E . |EB 0A jmp short 004C668A
004C6680 > |C785 40FFFFFF>mov dword ptr ss:[ebp-C0], 0052407C
004C668A > |8B95 40FFFFFF mov edx, dword ptr ss:[ebp-C0]
004C6690 . |8B02 mov eax, dword ptr ds:[edx]
004C6692 . |8945 80 mov dword ptr ss:[ebp-80], eax
004C6695 . |68 FC144900 push 004914FC ; 文件批量重命名
004C669A . |8B0D 14405200 mov ecx, dword ptr ds:[524014]
004C66A0 . |51 push ecx ; /String => "4"
004C66A1 . |FF15 60104000 call near dword ptr ds:[<&MSVBVM60.__> ; \__vbaStrCat
004C66A7 . |8BD0 mov edx, eax
004C66A9 . |8D4D C0 lea ecx, dword ptr ss:[ebp-40]
004C66AC . |FF15 BC124000 call near dword ptr ds:[<&MSVBVM60.__> ; MSVBVM60.__vbaStrMove
004C66B2 . |50 push eax
004C66B3 . |68 10154900 push 00491510 ; / 注册版
004C66B8 . |FF15 60104000 call near dword ptr ds:[<&MSVBVM60.__> ; \__vbaStrCat
004C66BE . |8BD0 mov edx, eax
004C6724 . /E9 E2000000 jmp 004C680B
004C6735 . 66:C745 D0 00>mov word ptr ss:[ebp-30], 0 ; 如果renamefile.txt不存在,就跳到这里了
004C679A . 68 201E4900 push 00491E20 ; / 未注册版
004C687D 66:8B45 D0 mov ax, word ptr ss:[ebp-30] ; 功能限制 全局变量
004C6891 . C3 retn ; 返回到 004F3483
004F347E . E8 BD2DFDFF call 004C6240 ; 这个call 就是上述 过程
004F3483 . 66:A3 1040520>mov word ptr ds:[524010], ax ; 功能限制 全局变量
注册时的验证流程:
004D07B0 . E8 FB69FFFF call 004C71B0 ; 计算 机器码
004D07B5 . 8BD0 mov edx, eax ; 机器码 eax=03CB4D8C, (UNICODE "0--0-")
004D083B . 68 683B4900 push 00493B68 ; 未注册 默认是未注册
004D0893 . E8 A858FFFF call 004C6140 ; 查看 renamefile.txt 是否存在
004D0898 . 0FBFC0 movsx eax, ax ; ax -1 存在 0 不存在
004D089B . 85C0 test eax, eax
004D089D . 0F84 71040000 je 004D0D14 ; 不存在则跳向 未注册 并且让你输入注册码。若存在则读取注册码
004D09E0 . E8 BB5EFFFF call 004C68A0 ; 计算注册码
004D09E5 . 8945 B4 mov dword ptr ss:[ebp-4C], eax
004D09E8 . C745 AC 08800>mov dword ptr ss:[ebp-54], 8008
004D09EF . 8D4D BC lea ecx, dword ptr ss:[ebp-44]
004D09F2 . 51 push ecx ; /var18
004D09F3 . 8D55 AC lea edx, dword ptr ss:[ebp-54]
004D09F6 . 52 push edx ; |var28
004D09F7 . FF15 44114000 call near dword ptr ds:[<&MSVBVM60.__> ; \__vbaVarTstEq
004D09FD . 66:8945 80 mov word ptr ss:[ebp-80], ax ; 注册窗口 注册码比对
004D0A01 . 8D45 AC lea eax, dword ptr ss:[ebp-54]
004D0A04 . 50 push eax
004D0A05 . 8D4D BC lea ecx, dword ptr ss:[ebp-44]
004D0A08 . 51 push ecx
004D0A09 . 6A 02 push 2
004D0A0B . FF15 3C104000 call near dword ptr ds:[<&MSVBVM60.__> ; MSVBVM60.__vbaFreeVarList
004D0A11 . 83C4 0C add esp, 0C
004D0A14 . 0FBF55 80 movsx edx, word ptr ss:[ebp-80]
004D0A18 . 85D2 test edx, edx
004D0A1A . 0F84 F4020000 je 004D0D14 ; 读取的注册码不正确就跳向 让你输入注册码
004D0A20 . C745 FC 0C000>mov dword ptr ss:[ebp-4], 0C
004D0A27 . 8B45 08 mov eax, dword ptr ss:[ebp+8]
004D0A2A . 8B08 mov ecx, dword ptr ds:[eax]
004D0A2C . 8B55 08 mov edx, dword ptr ss:[ebp+8]
004D0A2F . 52 push edx
004D0A30 . FF91 4C030000 call near dword ptr ds:[ecx+34C]
004D0A36 . 50 push eax
004D0A37 . 8D45 CC lea eax, dword ptr ss:[ebp-34]
004D0A3A . 50 push eax
004D0A3B . FF15 BC104000 call near dword ptr ds:[<&MSVBVM60.__> ; MSVBVM60.__vbaObjSet
004D0A41 . 8945 84 mov dword ptr ss:[ebp-7C], eax
004D0A44 . 68 843B4900 push 00493B84 ; 已注册!
若renamefile.txt 不存在或者保存的注册不正确则会让你重新输入注册
004D0034 . E8 6768FFFF call 004C68A0 ; 计算注册码
004D0039 . 8945 88 mov dword ptr ss:[ebp-78], eax
004D003C . C745 80 08800>mov dword ptr ss:[ebp-80], 8008
004D0043 . 8D4D 90 lea ecx, dword ptr ss:[ebp-70]
004D0046 . 51 push ecx ; /var18
004D0047 . 8D55 80 lea edx, dword ptr ss:[ebp-80] ; |
004D004A . 52 push edx ; |var28
004D004B . FF15 44114000 call near dword ptr ds:[<&MSVBVM60.__> ; \__vbaVarTstEq 比对你输入的和计算的注册
004D0051 . 66:8985 1CFFF>mov word ptr ss:[ebp-E4], ax
004D0058 . 8D45 80 lea eax, dword ptr ss:[ebp-80]
004D005B . 50 push eax
004D005C . 8D4D 90 lea ecx, dword ptr ss:[ebp-70]
004D005F . 51 push ecx
004D0060 . 8D55 A0 lea edx, dword ptr ss:[ebp-60]
004D0063 . 52 push edx
004D0064 . 6A 03 push 3
004D0066 . FF15 3C104000 call near dword ptr ds:[<&MSVBVM60.__> ; MSVBVM60.__vbaFreeVarList
004D006C . 83C4 10 add esp, 10
004D006F . 0FBF85 1CFFFF>movsx eax, word ptr ss:[ebp-E4]
004D0076 . 85C0 test eax, eax
004D0078 0F84 F2030000 je 004D0470 ; 输入的注册码不正确就跳注册码错误提示,若正确则将机器码、注册码保存到 renamefile.txt
004D036A . 68 7C3A4900 push 00493A7C ; 文件批量重命名 注册版 (注册码正确标题也会改)
功能限制验证:
004EC95A . 0FBF05 104052>movsx eax, word ptr ds:[524010] ; 启动时赋值的全局变量 -1 注册,0 未注册
004EC961 . 85C0 test eax, eax
004EC963 . 0F85 C3000000 jnz 004ECA2C
004EC969 . 837D D4 03 cmp dword ptr ss:[ebp-2C], 3 ; 如果是未注册,就判断是不是第三个文件
004EC96D . 0F8E B9000000 jle 004ECA2C
004EC973 . C745 FC 28000>mov dword ptr ss:[ebp-4], 28
004EC97A . C785 2CFFFFFF>mov dword ptr ss:[ebp-D4], 80020004
004EC984 . C785 24FFFFFF>mov dword ptr ss:[ebp-DC], 0A
004EC98E . C785 3CFFFFFF>mov dword ptr ss:[ebp-C4], 80020004
004EC998 . C785 34FFFFFF>mov dword ptr ss:[ebp-CC], 0A
004EC9A2 . C785 4CFFFFFF>mov dword ptr ss:[ebp-B4], 80020004
004EC9AC . C785 44FFFFFF>mov dword ptr ss:[ebp-BC], 0A
004EC9B6 . C785 ECFEFFFF>mov dword ptr ss:[ebp-114], 00494BB0 ; 未注册用户最多只有操作3个文件!
我的修改方法是:修改几行代码,让注册时把机器码和真码保存到renamefile.txt
|
评分
-
查看全部评分
|