一个程序的分析

由于版权问题不会提供任何涉及程序的名字以及下载。一切只为研究学习,切忌。

        我的第一个破解软件。比较简单,没有壳。验证采用本地注册码验证加网络验证。虽说是网络验证,但是感觉只是个空壳子,没有任何实质。也许是我没有深入分析注册码验证及verifycode码得生成经过的原因。总之,一半注册机,一半爆破。磕磕绊绊。
        程序为了防止爆破,在程序开始运行阶段调用了MapFileAndCheckSum函数来检测exe或dll文件是否被篡改。这个也是我在爆破之后程序不能运行才察觉到的。
        注册机只能通过本地验证,而网络验证部分用了爆破。其实两部分都可以爆破实现,只不过MapFileAndCheckSum函数发现的比较晚而已。

        注册机本想用逆算法来实现。写到一半发现自己被自己搞得越来越乱套。

       

0041E359   .  68 40EA4800   PUSH ****.0048EA40                   ;  ASCII "C:\Program Files\**********.exe"
0041E35E   .  897D D4       MOV DWORD PTR SS:[EBP-2C],EDI
0041E361   .  895D D8       MOV DWORD PTR SS:[EBP-28],EBX
0041E364   .  FF15 FCD74600 CALL DWORD PTR DS:[<&imagehlp.MapFileAnd>;  imagehlp.MapFileAndCheckSumA   //这里检测了文件是否被修改。。。。
0041E36A   .  85C0          TEST EAX,EAX
0041E36C   .  75 0C         JNZ SHORT ****.0041E37A
0041E36E   .  8B45 D4       MOV EAX,DWORD PTR SS:[EBP-2C]
0041E371   .  3B45 D8       CMP EAX,DWORD PTR SS:[EBP-28]
0041E374   .  0F85 81030000 JNZ ****.0041E6FB           //如果程序被修改,这里会跳走   所以 这里需要nop掉 *关键爆破点1

0041E37A   >  68 6C3E4700   PUSH ****.00473E6C                   ;  ASCII ""
0041E37F   .  8D4D E0       LEA ECX,DWORD PTR SS:[EBP-20]
0041E382   .  E8 604BFEFF   CALL ****.00402EE7
0041E387   .  FF75 E0       PUSH DWORD PTR SS:[EBP-20]               ; /MutexName
0041E38A   .  895D FC       MOV DWORD PTR SS:[EBP-4],EBX             ; |
0041E38D   .  53            PUSH EBX                                 ; |Inheritable
0041E38E   .  57            PUSH EDI                                 ; |Access
0041E38F   .  FF15 2CD44600 CALL DWORD PTR DS:[<&KERNEL32.OpenMutexA>; \OpenMutexA

 

以下部分是网络验证(?)部分,成功验证则生成注册表键值。所以根据目标要生成注册表这一原则,尽量让程序往目标跳。

 

0042B1F5   > \FF75 DC       PUSH DWORD PTR SS:[EBP-24]
0042B1F8   .  E8 46620200   CALL ****.00451443
0042B1FD   .  83F8 1E       CMP EAX,1E
0042B200   .  59            POP ECX
0042B201   .  7D 77         JGE SHORT ****.0042B27A              ;  这里需要跳1
0042B203   .  83F8 02       CMP EAX,2
0042B206   .  75 21         JNZ SHORT ****.0042B229
0042B208   .  51            PUSH ECX
0042B209   .  8BCC          MOV ECX,ESP
0042B20B   .  8965 F0       MOV DWORD PTR SS:[EBP-10],ESP
0042B20E   .  68 24534700   PUSH ****.00475324
0042B213   .  E8 CF7CFDFF   CALL ****.00402EE7
0042B218   .  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
0042B21B   .  50            PUSH EAX
0042B21C   .  E8 EFEEFFFF   CALL ****.0042A110
0042B221   .  59            POP ECX
0042B222   .  59            POP ECX
0042B223   .  C645 FC 0A    MOV BYTE PTR SS:[EBP-4],0A
0042B227   .^ EB 9D         JMP SHORT ****.0042B1C6
0042B229   >  3BC7          CMP EAX,EDI
0042B22B   .  74 29         JE SHORT ****.0042B256
0042B22D   .  83F8 14       CMP EAX,14
0042B230   .  74 24         JE SHORT ****.0042B256
0042B232   .  51            PUSH ECX
0042B233   .  8BCC          MOV ECX,ESP
0042B235   .  8965 F0       MOV DWORD PTR SS:[EBP-10],ESP
0042B238   .  68 E4524700   PUSH ****.004752E4
0042B23D   .  E8 A57CFDFF   CALL ****.00402EE7
0042B242   .  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
0042B245   .  50            PUSH EAX
0042B246   .  E8 C5EEFFFF   CALL ****.0042A110
0042B24B   .  59            POP ECX
0042B24C   .  59            POP ECX
0042B24D   .  C645 FC 0C    MOV BYTE PTR SS:[EBP-4],0C
0042B251   .^ E9 70FFFFFF   JMP ****.0042B1C6
0042B256   >  51            PUSH ECX
0042B257   .  8BCC          MOV ECX,ESP
0042B259   .  8965 F0       MOV DWORD PTR SS:[EBP-10],ESP
0042B25C   .  68 0C534700   PUSH ****.0047530C
0042B261   .  E8 817CFDFF   CALL ****.00402EE7
0042B266   .  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
0042B269   .  50            PUSH EAX
0042B26A   .  E8 A1EEFFFF   CALL ****.0042A110
0042B26F   .  59            POP ECX
0042B270   .  59            POP ECX
0042B271   .  C645 FC 0B    MOV BYTE PTR SS:[EBP-4],0B
0042B275   .^ E9 4CFFFFFF   JMP ****.0042B1C6
0042B27A   >  8B4D E4       MOV ECX,DWORD PTR SS:[EBP-1C]            ;  跳到这里1
0042B27D   .  8BD1          MOV EDX,ECX
0042B27F   .  6BD2 0D       IMUL EDX,EDX,0D
0042B282   .  81EA 2E160000 SUB EDX,162E
0042B288   .  3BD0          CMP EDX,EAX
0042B28A   .  74 46         JE SHORT ****.0042B2D2               ;  这里必须跳2
0042B28C   .  51            PUSH ECX
0042B28D   .  8BCC          MOV ECX,ESP
0042B28F   .  8965 F0       MOV DWORD PTR SS:[EBP-10],ESP
0042B292   .  68 E4524700   PUSH ****.004752E4
0042B297   .  E8 4B7CFDFF   CALL ****.00402EE7
0042B29C   .  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
0042B29F   .  50            PUSH EAX
0042B2A0   .  E8 6BEEFFFF   CALL ****.0042A110
0042B2A5   .  59            POP ECX
0042B2A6   .  59            POP ECX
0042B2A7   .  FF30          PUSH DWORD PTR DS:[EAX]                  ; /Arg1
0042B2A9   .  8B4D E0       MOV ECX,DWORD PTR SS:[EBP-20]            ; |
0042B2AC   .  C645 FC 0D    MOV BYTE PTR SS:[EBP-4],0D               ; |
0042B2B0   .  E8 2A1F0000   CALL ****.0042D1DF                   ; \****.0042D1DF
0042B2B5   .  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]
0042B2B8   .  83C1 F0       ADD ECX,-10
0042B2BB   .  C645 FC 07    MOV BYTE PTR SS:[EBP-4],7
0042B2BF   .  E8 DF5DFDFF   CALL ****.004010A3
0042B2C4   .  8B4D EC       MOV ECX,DWORD PTR SS:[EBP-14]
0042B2C7   .  57            PUSH EDI                                 ; /Arg1
0042B2C8   .  E8 F61F0000   CALL ****.0042D2C3                   ; \****.0042D2C3
0042B2CD   .  E9 B8020000   JMP ****.0042B58A
0042B2D2   >  6BC9 0B       IMUL ECX,ECX,0B                          ;  2跳到这里,防止程序执行上一条语句jmp跳走
0042B2D5   .  81F1 07060000 XOR ECX,607
0042B2DB   .  8BC1          MOV EAX,ECX
0042B2DD   .  894D EC       MOV DWORD PTR SS:[EBP-14],ECX
0042B2E0   .  B9 10270000   MOV ECX,2710
0042B2E5   .  3BC1          CMP EAX,ECX
0042B2E7   .  7D 0A         JGE SHORT ****.0042B2F3
0042B2E9   >  6BC0 0A       IMUL EAX,EAX,0A
0042B2EC   .  3BC1          CMP EAX,ECX
0042B2EE   .^ 7C F9         JL SHORT ****.0042B2E9
0042B2F0   .  8945 EC       MOV DWORD PTR SS:[EBP-14],EAX
0042B2F3   >  3D A0860100   CMP EAX,186A0
0042B2F8   .  7C 15         JL SHORT ****.0042B30F
0042B2FA   .  EB 03         JMP SHORT ****.0042B2FF
0042B2FC   >  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
0042B2FF   >  6A 0A         PUSH 0A
0042B301   .  99            CDQ
0042B302   .  59            POP ECX
0042B303   .  F7F9          IDIV ECX
0042B305   .  3D A0860100   CMP EAX,186A0
0042B30A   .  8945 EC       MOV DWORD PTR SS:[EBP-14],EAX
0042B30D   .^ 7D ED         JGE SHORT ****.0042B2FC
0042B30F   >  893D 40F04800 MOV DWORD PTR DS:[48F040],EDI
0042B315   .  E8 6CAB0000   CALL ****.00435E86
0042B31A   .  50            PUSH EAX
0042B31B   .  8D4D E4       LEA ECX,DWORD PTR SS:[EBP-1C]
0042B31E   .  E8 816DFDFF   CALL ****.004020A4
0042B323   .  FF75 EC       PUSH DWORD PTR SS:[EBP-14]
0042B326   .  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
0042B329   .  68 F0EF4600   PUSH ****.0046EFF0                   ;  ASCII "%d"
0042B32E   .  50            PUSH EAX
0042B32F   .  C645 FC 0E    MOV BYTE PTR SS:[EBP-4],0E
0042B333   .  E8 CD74FDFF   CALL ****.00402805
0042B338   .  53            PUSH EBX
0042B339   .  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]
0042B33C   .  68 C41C4700   PUSH ****.00471CC4                   ;  ASCII "All"
0042B341   .  50            PUSH EAX
0042B342   .  895D D4       MOV DWORD PTR SS:[EBP-2C],EBX
0042B345   .  E8 27D5FFFF   CALL ****.00428871
0042B34A   .  83C4 18       ADD ESP,18
0042B34D   .  85C0          TEST EAX,EAX
0042B34F   .  0F84 C3000000 JE ****.0042B418                     ;  这里是boss,不要慌,不要跳
0042B355   .  8D8E 10040000 LEA ECX,DWORD PTR DS:[ESI+410]
0042B35B   .  8B01          MOV EAX,DWORD PTR DS:[ECX]

 

以上爆破加注册机基本解决了程序的激活问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值