
众所周知,目前很多共享软件现在都使用全局变量,作为软件注册与否的标志,在汇编中体现为在某个内存地址中,存入1或0,往往1代表已注册,0为共享状态,计算机专业用语中,这个内存地址称之为FLAG,当程序运行时,初始化值为0,读取windoz注册表或*.ini文件中的注册信息后,若已注册,那么flag值变为1,否则,继续保持为0,程序的其他部分可以访问这个flag,维持软件的共享状态。一般情况下,我们只是非常关注一些跳转,crack时有时很难见效!如果熟练掌握了注册Flag,在破解软件中有时会起到事半功倍的效果!下面我以一个教育教学软件为例,说明此法的应用。 有不当之处,垦请各位大虾指正!
工具:Wdasm 8.93增强版:注[它可以直接查找汉字,对各种防止静态反编译的软件也可以反编译,如果没有的话,可以到:http://personal.dfminfo.com.cn/~kuangren处下载] Hacker view 很多版本都可以!
对象:金数龙光学物理实验室 v1.01 可以到:http://luckteacher.yeah.net物理软件中下载!
软件的保护:未注册时,程序启动时显示注册信息,共享时有功能限制,保存器件不能多于一个,程序未被压缩!程序运行时,在当前目录中产生s_data.obj文件,用来存放注册信息,注册成功后,注册信息就存放在此文件中,启动时,读此信息,显示在窗体上"属于xxx xxx".如果删除此文件,启动后仍显示未注册!属共享状态!
开始:执行仿真物理实验室.exe,跳出NAGS,要求注册等等,随意填写注册,对话框为"注册不成功"。关闭程序,检查一下,没加壳!太好了!(-_-)用Wdasm增强版反编译,查找"注册不成功"立即找到,注[可能显示为乱码,可启动Richwin或类似的软件即可看清汉字,但这毕竟不影响]代码如下:[共有两处]
:004370B1 8D45FC lea eax, dword ptr [ebp-04]
:004370B4 E86342FDFF call 0040B31C
:004370B9 50 push eax
:004370BA 8D95A8F7FFFF lea edx, dword ptr [ebp+FFFFF7A8]
:004370C0 52 push edx
:004370C1 E8CEF10600 call 004A6294
:004370C6 83C408 add esp, 00000008
:004370C9 33C9 xor ecx, ecx
:004370CB 894D8C mov dword ptr [ebp-74], ecx
:004370CE 894D90 mov dword ptr [ebp-70], ecx
:004370D1 33C0 xor eax, eax
:004370D3 894588 mov dword ptr [ebp-78], eax
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043714E(C)
|
:004370D6 8B5588 mov edx, dword ptr [ebp-78]
:004370D9 80BC15A8F7FFFF00 cmp byte ptr [ebp+edx-00000858], 00
:004370E1 90 nop
:004370E2 90 nop
:004370E3 8B4D88 mov ecx, dword ptr [ebp-78]
:004370E6 0FBE840DA8F7FFFF movsx eax, byte ptr [ebp+ecx-00000858]
:004370EE 8985A4F7FFFF mov dword ptr [ebp+FFFFF7A4], eax
:004370F4 DB85A4F7FFFF fild dword ptr [ebp+FFFFF7A4]
:004370FA 83C4F8 add esp, FFFFFFF8
:004370FD DD1C24 fstp qword ptr [esp]
:00437100 E88F3A0700 call 004AAB94
:00437105 83C408 add esp, 00000008
:00437108 DB2D64744300 fld tbyte ptr [00437464]
:0043710E DEC9 fmulp st(1), st(0)
:00437110 83C4F8 add esp, FFFFFFF8
:00437113 DD1C24 fstp qword ptr [esp]
:00437116 E895510700 call 004AC2B0
:0043711B 83C408 add esp, 00000008
:0043711E D80D70744300 fmul dword ptr [00437470]
:00437124 DC0574744300 fadd qword ptr [00437474]
:0043712A 83C4F8 add esp, FFFFFFF8
:0043712D DD1C24 fstp qword ptr [esp]
:00437130 E82F380700 call 004AA964
:00437135 83C408 add esp, 00000008
:00437138 D80D7C744300 fmul dword ptr [0043747C]
:0043713E DC458C fadd qword ptr [ebp-74]
:00437141 DD5D8C fstp qword ptr [ebp-74]
:00437144 FF4588 inc [ebp-78]
:00437147 817D88D0070000 cmp dword ptr [ebp-78], 000007D0
:0043714E 7C86 jl 004370D6
:00437150 66C745B45000 mov [ebp-4C], 0050
:00437156 66C745B45C00 mov [ebp-4C], 005C
:0043715C 8D45E0 lea eax, dword ptr [ebp-20]
:0043715F E844A7FCFF call 004018A8
:00437164 8BD0 mov edx, eax
:00437166 FF45C0 inc [ebp-40]
:00437169 8B4DA0 mov ecx, dword ptr [ebp-60]
:0043716C 8B81F0020000 mov eax, dword ptr [ecx+000002F0]
:00437172 E885F70300 call 004768FC
:00437177 8D45E0 lea eax, dword ptr [ebp-20]
:0043717A E885B60700 call 004B2804
:0043717F DD5D94 fstp qword ptr [ebp-6C]
:00437182 FF4DC0 dec [ebp-40]
:00437185 8D45E0 lea eax, dword ptr [ebp-20]
:00437188 BA02000000 mov edx, 00000002
:0043718D E8AAB40700 call 004B263C
:00437192 66C745B41400 mov [ebp-4C], 0014
:00437198 EB5F jmp 004371F9
:0043719A 6A00 push 00000000
* Possible StringData Ref from Data Obj ->"提示"
|
:0043719C B929234C00 mov ecx, 004C2329
* Possible StringData Ref from Data Obj ->"注册不成功。"
|
:004371A1 BA1C234C00 mov edx, 004C231C
:004371A6 A18C714C00 mov eax, dword ptr [004C718C]
:004371AB 8B00 mov eax, dword ptr [eax]
:004371AD E84EB30700 call 004B2500
:004371B2 8B45A0 mov eax, dword ptr [ebp-60]
:004371B5 E86E1A0300 call 00468C28
:004371BA FF4DC0 dec [ebp-40]
:004371BD 8D45F8 lea eax, dword ptr [ebp-08]
:004371C0 BA02000000 mov edx, 00000002
:004371C5 E872B40700 call 004B263C
:004371CA FF4DC0 dec [ebp-40]
:004371CD 8D45FC lea eax, dword ptr [ebp-04]
:004371D0 BA02000000 mov edx, 00000002
:004371D5 E862B40700 call 004B263C
:004371DA 33C9 xor ecx, ecx
:004371DC 894DC0 mov dword ptr [ebp-40], ecx
:004371DF 8D45A4 lea eax, dword ptr [ebp-5C]
:004371E2 50 push eax
:004371E3 E8E78A0700 call 004AFCCF
:004371E8 59 pop ecx
:004371E9 E96C020000 jmp 0043745A
:004371EE 66C745B45800 mov [ebp-4C], 0058
:004371F4 E82C840700 call 004AF625
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00437198(U)