众所周知,目前很多共享软件现在都使用全局变量,作为软件注册与否的标志,在汇编中体现为在某个内存地址中,存入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)
[1] [2] [3] 下一页 |