咨询电话:010-82823766

关于注册Flag在破解中的应用
  • 2008-2-27 13:23:31
  • 发表时间:
  • 浏览次数:
  • 本站原创
  • 文章来源:
  • 佚名
  • 作者:

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


 

top
推荐导读
推荐导读
bottom
top
热门文章
热门文章
bottom