吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 27555|回复: 65
收起左侧

[原创] xxx工具破解记录

  [复制链接]
吃饭睡觉打豆豆 发表于 2015-12-1 14:39
本帖最后由 H夜 于 2019-6-6 18:26 编辑

【文章标题】: 词频统计工具破解记录
【文章作者】: 吃饭睡觉打豆豆
【下载地址】: 见附件
【保护方式】: 无
【编写语言】: VB
【使用工具】: OD、VB.Decompiler、ExeinfoPE
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  首先先查一下壳,
   1.png
  发现程序没有加壳,是VB编写的程序,vb写得程序可以使用VB Decompiler进行反编译。
  把程序用VB Decompiler打开,找到Form1的Form_Load事件(记住事件地址),然后使用od载入此程序,并找到Load事件的位置并下断。
   2.png
  在od中运行程序,程序断在了Load事件的位置,单步向下跟,发现rtcGetSetting函数,并且参数是RegCode,这样就可以肯定程序读取注册表进行注册码验证。
   3.png
  因为是第一次运行,所以不管这个F9运行。程序弹出输入注册码的框。在VB Decompiler中找到frmReg的Command1_Click事件,记下地址,在od中下断
   4.png
  然后输入假码,按下“完成注册”,程序断在按键事件中。单步跟下去,VB的代码很长很长,所以跟的时候要有耐心。
   5.png
  在这里会发现程序取出假码算了一下长度,并和0xE(14)作比较,如果大于等于14就跳下去继续计算,如不是就弹框“注册失败”。
   6.png
  这里先在比较长度那里下一个断点,然后直接运行,然后继续输入注册码,这次输入14位,程序断在比较长度那里后继续跟下去。
  跟到这里发现程序吧假码压栈,并调用一个子程序。跟进去看一下。
   7.png
  F8单步步过可以发现,程序读取假码,然后使用Split函数用“-”为分解标记分解假码。
   8.png
  然后将机器码压栈调用一个替换函数(替换规则见下边),然后和分解后的假码第一段进行比较。如果正确就提示注册成功。
   9.png
  如果这个时候你以为真的注册成功,那就错了,你想,程序把注册码分成了两段。然后只验证第一段,就注册成功,那么要第二段干什么,这程序又不是提示授权给XXX那种的。
  所以一定还有验证,最简单的方法就是把程序重启一遍。你会发现,程序又提示注册了。
  下边重启程序,程序断在Load这里,在rtcGetSetting函数之后,程序将假码压栈并调用子程序。F7单步跟进去。
   10.png
  在这里可以发现,程序将假码分割,然后判断分割后的数组上限是否是2,也就是三段。看来注册码应该是三段了。不是的话就继续弹出注册框。
   11.png
  这段代码返回后将返回值赋值给了一个全局变量,记下这个地址,右键查找所有常量,输入这个地址,找到后在所有的地址下断。
   12.png
   13.png
  让他弹出注册框后,输入第一段真码,加上两段假码,注册后重新运行程序,这次不再弹出。
  程序主窗体打开,点一下添加文件,程序断下,
   14.png
  这里程序又是那样把假码压栈,然后调用子程序。跟进去看看都做了什么。
  跟到这里可以发现,程序读取第二段假码和871作比较,由此可知第二段为“871”
  继续运行,填好输入文件和输出文件后,点击“词频统计”按钮,程序会会弹出输入注册码的界面,可以吧第二段假码改为871,然后重新运行。
   15.png
  继续运行,填好输入文件和输出文件后,点击“词频统计”按钮,程序断下,这里可以看出和上面步骤是一样的,所以跟进去这个call
   16.png
  跟进去这call,程序有一套算法,奈何技术不够没有看明白,若各位有看明白的,还请提示一下。
  不过没有关系,并不需要完全逆出他的算法,在下方就有明码比较
   17.png
  在这里获取到第三段注册码,自此,三段注册码全部获取完毕,组合起来就是真正的注册码了
  
  附1:第一段注册码对应机器码替换表
  1234567890
  6405291378
  附2:三段明码对比地址。
  第一段:0042C64F   .  FF15 C4104000 call dword ptr ds:[<&MSVBVM60.__vbaStrCm>;  msvbvm60.__vbaStrCmp
  第二段:0042CB5D   .  FF15 CC104000 call dword ptr ds:[<&MSVBVM60.__vbaVarTs>; \__vbaVarTstEq
  第三段:0042C978   .  FF15 C4104000 call dword ptr ds:[<&MSVBVM60.__vbaStrCm>;  msvbvm60.__vbaStrCmp
  附3:注册码存放位置:
  HKEY_CURRENT_USER\Software\VB and VBA Program Settings
  
  
  
  
--------------------------------------------------------------------------------
【最后说两句】:如果各位觉得学到了什么的请为我评分,评分不减自己的分数。


原版未破解程序在这里
词频统计工具.7z (47.01 KB, 下载次数: 196)

免费评分

参与人数 27热心值 +27 收起 理由
fobfnl + 1 鼓励转贴优秀软件安全工具和文档!
EvillenG + 1 我很赞同!
l_cat + 1 鼓励转贴优秀软件安全工具和文档!
chrisdeng + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
aberowe + 1 我很赞同!
yongtianjian + 1 热心回复!
zxinyun + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
会飞的飞机 + 1 我很赞同!
vbty + 1 感谢分享
大米粥 + 1 谢谢@Thanks!
fenghaoda + 1 已答复!
hcloveld + 1 我很赞同!
盈盈一水间cc + 1 谢谢@Thanks!
F_雪 + 1 谢谢@Thanks!
kennedy + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
氧气哥哥 + 1 已经处理,感谢您对吾爱破解论坛的支持!
罒_罒 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
FraMeQ + 1 我很赞同!
86477019 + 1 谢谢@Thanks!
Junkrat + 1 谢谢@Thanks!
weihe + 1 谢谢@Thanks!
asong + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
yingxifanfan + 1 谢谢@Thanks!
Sound + 1 已经处理,感谢您对吾爱破解论坛的支持!
苏紫方璇 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
wangsheng66 + 1 热心回复!
Myself_GF + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

expasy 发表于 2015-12-2 22:12
本帖最后由 expasy 于 2015-12-2 22:22 编辑

看了下算法(仅仅是真码第3段的计算)
[Asm] 纯文本查看 复制代码
0042C180   $  55              push ebp                                             ;  这里是第三部分算法
0042C181   .  8BEC            mov ebp,esp
0042C183   .  83EC 0C         sub esp,0xC
0042C186   .  68 96224000     push <jmp.&MSVBVM60.__vbaExceptHandler>              ;  SE 处理程序安装
0042C18B   .  64:A1 00000000  mov eax,dword ptr fs:[0]
0042C191   .  50              push eax                                             ;  kernel32.BaseThreadInitThunk
0042C192   .  64:8925 0000000>mov dword ptr fs:[0],esp
0042C199   .  83EC 6C         sub esp,0x6C
0042C19C   .  53              push ebx
0042C19D   .  56              push esi
0042C19E   .  57              push edi
0042C19F   .  8965 F4         mov dword ptr ss:[ebp-0xC],esp
0042C1A2   .  C745 F8 2821400>mov dword ptr ss:[ebp-0x8],WordsCou.00402128
0042C1A9   .  8B7D 08         mov edi,dword ptr ss:[ebp+0x8]
0042C1AC   .  33F6            xor esi,esi
0042C1AE   .  8975 D8         mov dword ptr ss:[ebp-0x28],esi
0042C1B1   .  8975 D4         mov dword ptr ss:[ebp-0x2C],esi
0042C1B4   .  8B07            mov eax,dword ptr ds:[edi]
0042C1B6   .  8975 D0         mov dword ptr ss:[ebp-0x30],esi
0042C1B9   .  50              push eax                                             ; /String = "?譕藬?????p??遶邐邐?譕凬荑?琀X??僸??藿瓀嘤痿??痿&#59400;?.綃???僸??盰???茀??郒邐邐?譕埬??诿????·???舏"
0042C1BA   .  8975 C4         mov dword ptr ss:[ebp-0x3C],esi                      ; |
0042C1BD   .  8975 C0         mov dword ptr ss:[ebp-0x40],esi                      ; |
0042C1C0   .  8975 B0         mov dword ptr ss:[ebp-0x50],esi                      ; |
0042C1C3   .  8975 AC         mov dword ptr ss:[ebp-0x54],esi                      ; |
0042C1C6   .  8975 9C         mov dword ptr ss:[ebp-0x64],esi                      ; |
0042C1C9   .  FF15 24104000   call near dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]    ; \__vbaLenBstr
0042C1CF   .  85C0            test eax,eax                                         ;  kernel32.BaseThreadInitThunk
0042C1D1   .  0F84 20030000   je WordsCou.0042C4F7
0042C1D7   .  56              push esi
0042C1D8   .  8D4D 9C         lea ecx,dword ptr ss:[ebp-0x64]
0042C1DB   .  68 80000000     push 0x80
0042C1E0   .  8D55 B0         lea edx,dword ptr ss:[ebp-0x50]
0042C1E3   .  51              push ecx
0042C1E4   .  52              push edx                                             ;  WordsCou.<ModuleEntryPoint>
0042C1E5   .  897D A4         mov dword ptr ss:[ebp-0x5C],edi
0042C1E8   .  C745 9C 0840000>mov dword ptr ss:[ebp-0x64],0x4008
0042C1EF   .  FF15 5C114000   call near dword ptr ds:[<&MSVBVM60.#717>]            ;  msvbvm60.rtcStrConvVar2
0042C1F5   .  8D45 B0         lea eax,dword ptr ss:[ebp-0x50]
0042C1F8   .  8D4D AC         lea ecx,dword ptr ss:[ebp-0x54]
0042C1FB   .  50              push eax                                             ;  kernel32.BaseThreadInitThunk
0042C1FC   .  51              push ecx
0042C1FD   .  FF15 80114000   call near dword ptr ds:[<&MSVBVM60.__vbaVar2Vec>]    ;  msvbvm60.__vbaVar2Vec
0042C203   .  8D55 AC         lea edx,dword ptr ss:[ebp-0x54]
0042C206   .  8D45 D8         lea eax,dword ptr ss:[ebp-0x28]
0042C209   .  52              push edx                                             ;  WordsCou.<ModuleEntryPoint>
0042C20A   .  50              push eax                                             ;  kernel32.BaseThreadInitThunk
0042C20B   .  FF15 14104000   call near dword ptr ds:[<&MSVBVM60.__vbaAryMove>]    ;  msvbvm60.__vbaAryMove
0042C211   .  8D4D B0         lea ecx,dword ptr ss:[ebp-0x50]
0042C214   .  FF15 18104000   call near dword ptr ds:[<&MSVBVM60.__vbaFreeVar>]    ;  msvbvm60.__vbaFreeVar
0042C21A   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C21D   .  51              push ecx
0042C21E   .  6A 01           push 0x1
0042C220   .  FF15 E8104000   call near dword ptr ds:[<&MSVBVM60.__vbaLbound>]     ;  msvbvm60.__vbaLbound
0042C226   .  8B55 D8         mov edx,dword ptr ss:[ebp-0x28]
0042C229   .  8BF8            mov edi,eax                                          ;  kernel32.BaseThreadInitThunk
0042C22B   .  52              push edx                                             ;  WordsCou.<ModuleEntryPoint>
0042C22C   .  6A 01           push 0x1
0042C22E   .  897D DC         mov dword ptr ss:[ebp-0x24],edi
0042C231   .  FF15 60114000   call near dword ptr ds:[<&MSVBVM60.__vbaUbound>]     ;  msvbvm60.__vbaUbound
0042C237   .  8BD8            mov ebx,eax                                          ;  kernel32.BaseThreadInitThunk
0042C239   .  57              push edi                                             ; |lBoundn = 0x0
0042C23A   .  83C3 01         add ebx,0x1                                          ; |
0042C23D   .  8D4D C4         lea ecx,dword ptr ss:[ebp-0x3C]                      ; |
0042C240   .  0F80 13030000   jo WordsCou.0042C559                                 ; |
0042C246   .  8BC3            mov eax,ebx                                          ; |
0042C248   .  895D C8         mov dword ptr ss:[ebp-0x38],ebx                      ; |
0042C24B   .  83E8 01         sub eax,0x1                                          ; |
0042C24E   .  0F80 05030000   jo WordsCou.0042C559                                 ; |
0042C254   .  50              push eax                                             ; |uBoundn = 0x76F4ED5A
0042C255   .  6A 01           push 0x1                                             ; |TotalArray = 0x1
0042C257   .  6A 11           push 0x11                                            ; |vBType = Byte
0042C259   .  51              push ecx                                             ; |RetADDR = NULL
0042C25A   .  6A 01           push 0x1                                             ; |VAlign = BYTE
0042C25C   .  68 80000000     push 0x80                                            ; |Arg1 = 0x80
0042C261   .  FF15 F4104000   call near dword ptr ds:[<&MSVBVM60.__vbaRedim>]      ; \__vbaRedim
0042C267   .  8BCB            mov ecx,ebx
0042C269   .  83C4 1C         add esp,0x1C
0042C26C   .  83E9 01         sub ecx,0x1
0042C26F   .  0F80 E4020000   jo WordsCou.0042C559
0042C275   .  FF15 D0104000   call near dword ptr ds:[<&MSVBVM60.__vbaI2I4>]       ;  msvbvm60.__vbaI2I4
0042C27B   .  8BCF            mov ecx,edi
0042C27D   .  8945 90         mov dword ptr ss:[ebp-0x70],eax                      ;  kernel32.BaseThreadInitThunk
0042C280   .  FF15 D0104000   call near dword ptr ds:[<&MSVBVM60.__vbaI2I4>]       ;  msvbvm60.__vbaI2I4
0042C286   .  8945 E8         mov dword ptr ss:[ebp-0x18],eax                      ;  kernel32.BaseThreadInitThunk
0042C289   >  66:3B45 90      cmp ax,word ptr ss:[ebp-0x70]
0042C28D   .  0F8F 07020000   jg WordsCou.0042C49A
0042C293   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C296   .  0FBFC0          movsx eax,ax
0042C299   .  3BC7            cmp eax,edi
0042C29B   .  8945 84         mov dword ptr ss:[ebp-0x7C],eax                      ;  kernel32.BaseThreadInitThunk
0042C29E   .  0F85 BA000000   jnz WordsCou.0042C35E
0042C2A4   .  85C9            test ecx,ecx
0042C2A6   .  74 2A           je short WordsCou.0042C2D2
0042C2A8   .  66:8339 01      cmp word ptr ds:[ecx],0x1
0042C2AC   .  75 24           jnz short WordsCou.0042C2D2
0042C2AE   .  8B51 14         mov edx,dword ptr ds:[ecx+0x14]
0042C2B1   .  8B41 10         mov eax,dword ptr ds:[ecx+0x10]
0042C2B4   .  8BF3            mov esi,ebx
0042C2B6   .  8B3D BC104000   mov edi,dword ptr ds:[<&MSVBVM60.__vbaGenerateBounds>;  msvbvm60.__vbaGenerateBoundsError
0042C2BC   .  83EE 01         sub esi,0x1
0042C2BF   .  0F80 94020000   jo WordsCou.0042C559
0042C2C5   .  2BF2            sub esi,edx                                          ;  WordsCou.<ModuleEntryPoint>
0042C2C7   .  3BF0            cmp esi,eax                                          ;  kernel32.BaseThreadInitThunk
0042C2C9   .  72 18           jb short WordsCou.0042C2E3
0042C2CB   .  FFD7            call near edi                                        ;  <&MSVBVM60.__vbaGenerateBoundsError>
0042C2CD   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C2D0   .  EB 11           jmp short WordsCou.0042C2E3
0042C2D2   >  FF15 BC104000   call near dword ptr ds:[<&MSVBVM60.__vbaGenerateBoun>;  msvbvm60.__vbaGenerateBoundsError
0042C2D8   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C2DB   .  8B3D BC104000   mov edi,dword ptr ds:[<&MSVBVM60.__vbaGenerateBounds>;  msvbvm60.__vbaGenerateBoundsError
0042C2E1   .  8BF0            mov esi,eax                                          ;  kernel32.BaseThreadInitThunk
0042C2E3   >  8B51 0C         mov edx,dword ptr ds:[ecx+0xC]
0042C2E6   .  33C0            xor eax,eax                                          ;  kernel32.BaseThreadInitThunk
0042C2E8   .  83FB 01         cmp ebx,0x1
0042C2EB   .  8A0432          mov al,byte ptr ds:[edx+esi]                         ;  '3'第一段的最后一位
0042C2EE   .  8945 D0         mov dword ptr ss:[ebp-0x30],eax                      ;  kernel32.BaseThreadInitThunk
0042C2F1   .  75 28           jnz short WordsCou.0042C31B
0042C2F3   .  85C9            test ecx,ecx
0042C2F5   .  74 56           je short WordsCou.0042C34D
0042C2F7   .  66:3919         cmp word ptr ds:[ecx],bx
0042C2FA   .  75 51           jnz short WordsCou.0042C34D
0042C2FC   .  8B71 14         mov esi,dword ptr ds:[ecx+0x14]
0042C2FF   .  8B41 10         mov eax,dword ptr ds:[ecx+0x10]
0042C302   .  F7DE            neg esi
0042C304   .  3BF0            cmp esi,eax                                          ;  kernel32.BaseThreadInitThunk
0042C306   .  72 05           jb short WordsCou.0042C30D
0042C308   .  FFD7            call near edi
0042C30A   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C30D   >  8B51 0C         mov edx,dword ptr ds:[ecx+0xC]
0042C310   .  8BC6            mov eax,esi
0042C312   .  33DB            xor ebx,ebx
0042C314   .  8A1C02          mov bl,byte ptr ds:[edx+eax]
0042C317   .  8BF3            mov esi,ebx
0042C319   .  EB 49           jmp short WordsCou.0042C364
0042C31B   >  85C9            test ecx,ecx
0042C31D   .  74 2E           je short WordsCou.0042C34D
0042C31F   .  66:8339 01      cmp word ptr ds:[ecx],0x1
0042C323   .  75 28           jnz short WordsCou.0042C34D
0042C325   .  8B51 14         mov edx,dword ptr ds:[ecx+0x14]
0042C328   .  8B41 10         mov eax,dword ptr ds:[ecx+0x10]
0042C32B   .  83EB 02         sub ebx,0x2
0042C32E   .  0F80 25020000   jo WordsCou.0042C559
0042C334   .  2BDA            sub ebx,edx                                          ;  WordsCou.<ModuleEntryPoint>
0042C336   .  3BD8            cmp ebx,eax                                          ;  kernel32.BaseThreadInitThunk
0042C338   .  72 05           jb short WordsCou.0042C33F
0042C33A   .  FFD7            call near edi
0042C33C   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C33F   >  8B51 0C         mov edx,dword ptr ds:[ecx+0xC]
0042C342   .  8BC3            mov eax,ebx
0042C344   .  33DB            xor ebx,ebx
0042C346   .  8A1C02          mov bl,byte ptr ds:[edx+eax]
0042C349   .  8BF3            mov esi,ebx
0042C34B   .  EB 17           jmp short WordsCou.0042C364
0042C34D   >  FFD7            call near edi
0042C34F   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C352   .  33DB            xor ebx,ebx
0042C354   .  8B51 0C         mov edx,dword ptr ds:[ecx+0xC]
0042C357   .  8A1C02          mov bl,byte ptr ds:[edx+eax]
0042C35A   .  8BF3            mov esi,ebx
0042C35C   .  EB 06           jmp short WordsCou.0042C364
0042C35E   >  8B3D BC104000   mov edi,dword ptr ds:[<&MSVBVM60.__vbaGenerateBounds>;  msvbvm60.__vbaGenerateBoundsError
0042C364   >  85C9            test ecx,ecx
0042C366   .  74 1E           je short WordsCou.0042C386
0042C368   .  66:8339 01      cmp word ptr ds:[ecx],0x1
0042C36C   .  75 18           jnz short WordsCou.0042C386
0042C36E   .  8B5D 84         mov ebx,dword ptr ss:[ebp-0x7C]
0042C371   .  8B51 14         mov edx,dword ptr ds:[ecx+0x14]
0042C374   .  8B41 10         mov eax,dword ptr ds:[ecx+0x10]
0042C377   .  2BDA            sub ebx,edx                                          ;  WordsCou.<ModuleEntryPoint>
0042C379   .  3BD8            cmp ebx,eax                                          ;  kernel32.BaseThreadInitThunk
0042C37B   .  72 05           jb short WordsCou.0042C382
0042C37D   .  FFD7            call near edi
0042C37F   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C382   >  8BC3            mov eax,ebx
0042C384   .  EB 05           jmp short WordsCou.0042C38B
0042C386   >  FFD7            call near edi
0042C388   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C38B   >  8B51 0C         mov edx,dword ptr ds:[ecx+0xC]
0042C38E   .  33DB            xor ebx,ebx
0042C390   .  8A1C02          mov bl,byte ptr ds:[edx+eax]                         ;  bl=0x36(依次真码第一段的各位)
0042C393   .  8B55 D0         mov edx,dword ptr ss:[ebp-0x30]                      ;  edx=0x3e
0042C396   .  23DA            and ebx,edx                                          ;  WordsCou.<ModuleEntryPoint>
0042C398   .  85C9            test ecx,ecx
0042C39A   .  74 22           je short WordsCou.0042C3BE
0042C39C   .  66:8339 01      cmp word ptr ds:[ecx],0x1
0042C3A0   .  75 1C           jnz short WordsCou.0042C3BE
0042C3A2   .  8B7D 84         mov edi,dword ptr ss:[ebp-0x7C]
0042C3A5   .  8B51 14         mov edx,dword ptr ds:[ecx+0x14]
0042C3A8   .  8B41 10         mov eax,dword ptr ds:[ecx+0x10]
0042C3AB   .  2BFA            sub edi,edx                                          ;  WordsCou.<ModuleEntryPoint>
0042C3AD   .  3BF8            cmp edi,eax                                          ;  kernel32.BaseThreadInitThunk
0042C3AF   .  72 09           jb short WordsCou.0042C3BA
0042C3B1   .  FF15 BC104000   call near dword ptr ds:[<&MSVBVM60.__vbaGenerateBoun>;  msvbvm60.__vbaGenerateBoundsError
0042C3B7   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C3BA   >  8BC7            mov eax,edi
0042C3BC   .  EB 05           jmp short WordsCou.0042C3C3
0042C3BE   >  FFD7            call near edi
0042C3C0   .  8B4D D8         mov ecx,dword ptr ss:[ebp-0x28]
0042C3C3   >  8B49 0C         mov ecx,dword ptr ds:[ecx+0xC]
0042C3C6   .  33D2            xor edx,edx                                          ;  WordsCou.<ModuleEntryPoint>
0042C3C8   .  8A1401          mov dl,byte ptr ds:[ecx+eax]                         ;  dl=0x36(依次真码第一段的各位)
0042C3CB   .  8BFA            mov edi,edx                                          ;  edi=0x36
0042C3CD   .  0BFE            or edi,esi                                           ;  esi=0x38(倒数第二位)
0042C3CF   .  81FB 80000000   cmp ebx,0x80                                         ;  ebx=0x32
0042C3D5   .  7E 0F           jle short WordsCou.0042C3E6
0042C3D7   .  B8 00010000     mov eax,0x100
0042C3DC   .  2BC3            sub eax,ebx
0042C3DE   .  0F80 75010000   jo WordsCou.0042C559
0042C3E4   .  8BD8            mov ebx,eax                                          ;  kernel32.BaseThreadInitThunk
0042C3E6   >  81FF 80000000   cmp edi,0x80                                         ;  edi=0x3e=edx or esi
0042C3EC   .  7E 0F           jle short WordsCou.0042C3FD
0042C3EE   .  B9 00010000     mov ecx,0x100
0042C3F3   .  2BCF            sub ecx,edi
0042C3F5   .  0F80 5E010000   jo WordsCou.0042C559
0042C3FB   .  8BF9            mov edi,ecx
0042C3FD   >  8B45 C4         mov eax,dword ptr ss:[ebp-0x3C]
0042C400   .  85C0            test eax,eax                                         ;  kernel32.BaseThreadInitThunk
0042C402   .  74 22           je short WordsCou.0042C426
0042C404   .  66:8338 01      cmp word ptr ds:[eax],0x1
0042C408   .  75 1C           jnz short WordsCou.0042C426
0042C40A   .  8B4D 84         mov ecx,dword ptr ss:[ebp-0x7C]
0042C40D   .  8B50 14         mov edx,dword ptr ds:[eax+0x14]
0042C410   .  2BCA            sub ecx,edx                                          ;  WordsCou.<ModuleEntryPoint>
0042C412   .  8BF1            mov esi,ecx
0042C414   .  8B48 10         mov ecx,dword ptr ds:[eax+0x10]
0042C417   .  3BF1            cmp esi,ecx
0042C419   .  72 06           jb short WordsCou.0042C421
0042C41B   .  FF15 BC104000   call near dword ptr ds:[<&MSVBVM60.__vbaGenerateBoun>;  msvbvm60.__vbaGenerateBoundsError
0042C421   >  8975 80         mov dword ptr ss:[ebp-0x80],esi
0042C424   .  EB 09           jmp short WordsCou.0042C42F
0042C426   >  FF15 BC104000   call near dword ptr ds:[<&MSVBVM60.__vbaGenerateBoun>;  msvbvm60.__vbaGenerateBoundsError
0042C42C   .  8945 80         mov dword ptr ss:[ebp-0x80],eax                      ;  kernel32.BaseThreadInitThunk
0042C42F   >  68 C8964000     push WordsCou.004096C8                               ; /A
0042C434   .  FF15 38104000   call near dword ptr ds:[<&MSVBVM60.#516>]            ; \取ascii值
0042C43A   .  0FBFC8          movsx ecx,ax                                         ;  eax=0x41='A'
0042C43D   .  8BC7            mov eax,edi                                          ;  eax=edi=0x3e
0042C43F   .  BE 34000000     mov esi,0x34
0042C444   .  0FAFC3          imul eax,ebx                                         ;  eax=0x3e*0x32
0042C447   .  0F80 0C010000   jo WordsCou.0042C559
0042C44D   .  99              cdq
0042C44E   .  F7FE            idiv esi                                             ;  eax=0x3e*0x32/0x34,edx=mod
0042C450   .  03CA            add ecx,edx                                          ;  ecx=0x41+edx         //('A'~'t')
0042C452   .  0F80 01010000   jo WordsCou.0042C559
0042C458   .  FF15 1C114000   call near dword ptr ds:[<&MSVBVM60.__vbaUI1I4>]      ;  msvbvm60.__vbaUI1I4
0042C45E   .  8B55 C4         mov edx,dword ptr ss:[ebp-0x3C]
0042C461   .  8BF7            mov esi,edi
0042C463   .  03F3            add esi,ebx                                          ;  esi=edi+ebx=0x3e+0x32
0042C465   .  8B5D C8         mov ebx,dword ptr ss:[ebp-0x38]
0042C468   .  8B4A 0C         mov ecx,dword ptr ds:[edx+0xC]
0042C46B   .  8B55 80         mov edx,dword ptr ss:[ebp-0x80]
0042C46E   .  0F80 E5000000   jo WordsCou.0042C559
0042C474   .  880411          mov byte ptr ds:[ecx+edx],al                         ;  al=0x41+edx   ////(A~t)
0042C477   .  B8 01000000     mov eax,0x1
0042C47C   .  81E6 FF000000   and esi,0xFF                                         ;  esi and 0xff =esi
0042C482   .  66:0345 E8      add ax,word ptr ss:[ebp-0x18]
0042C486   .  897D D0         mov dword ptr ss:[ebp-0x30],edi
0042C489   .  8B7D DC         mov edi,dword ptr ss:[ebp-0x24]
0042C48C   .  0F80 C7000000   jo WordsCou.0042C559
0042C492   .  8945 E8         mov dword ptr ss:[ebp-0x18],eax                      ;  kernel32.BaseThreadInitThunk
0042C495   .^ E9 EFFDFFFF     jmp WordsCou.0042C289
0042C49A   >  8B45 C4         mov eax,dword ptr ss:[ebp-0x3C]
0042C49D   .  8D4D 9C         lea ecx,dword ptr ss:[ebp-0x64]
0042C4A0   .  51              push ecx
0042C4A1   .  8945 A4         mov dword ptr ss:[ebp-0x5C],eax                      ;  kernel32.BaseThreadInitThunk
0042C4A4   .  C745 9C 1120000>mov dword ptr ss:[ebp-0x64],0x2011
0042C4AB   .  FF15 FC114000   call near dword ptr ds:[<&MSVBVM60.__vbaStrVarCopy>] ;  msvbvm60.__vbaStrVarCopy
0042C4B1   .  8B35 F0114000   mov esi,dword ptr ds:[<&MSVBVM60.__vbaStrMove>]      ;  msvbvm60.__vbaStrMove
0042C4B7   .  8BD0            mov edx,eax                                          ;  kernel32.BaseThreadInitThunk
0042C4B9   .  8D4D D4         lea ecx,dword ptr ss:[ebp-0x2C]
0042C4BC   .  FFD6            call near esi                                        ;  <&MSVBVM60.__vbaStrMove>
0042C4BE   .  6A 00           push 0x0
0042C4C0   .  8D45 9C         lea eax,dword ptr ss:[ebp-0x64]
0042C4C3   .  6A 40           push 0x40
0042C4C5   .  8D4D B0         lea ecx,dword ptr ss:[ebp-0x50]
0042C4C8   .  8D55 D4         lea edx,dword ptr ss:[ebp-0x2C]
0042C4CB   .  50              push eax                                             ;  kernel32.BaseThreadInitThunk
0042C4CC   .  51              push ecx
0042C4CD   .  8955 A4         mov dword ptr ss:[ebp-0x5C],edx                      ;  WordsCou.<ModuleEntryPoint>
0042C4D0   .  C745 9C 0840000>mov dword ptr ss:[ebp-0x64],0x4008
0042C4D7   .  FF15 5C114000   call near dword ptr ds:[<&MSVBVM60.#717>]            ;  msvbvm60.rtcStrConvVar2
0042C4DD   .  8D55 B0         lea edx,dword ptr ss:[ebp-0x50]
0042C4E0   .  52              push edx                                             ;  WordsCou.<ModuleEntryPoint>
0042C4E1   .  FF15 20104000   call near dword ptr ds:[<&MSVBVM60.__vbaStrVarMove>] ;  msvbvm60.__vbaStrVarMove
0042C4E7   .  8BD0            mov edx,eax                                          ;  kernel32.BaseThreadInitThunk
0042C4E9   .  8D4D C0         lea ecx,dword ptr ss:[ebp-0x40]
0042C4EC   .  FFD6            call near esi
0042C4EE   .  8D4D B0         lea ecx,dword ptr ss:[ebp-0x50]
0042C4F1   .  FF15 18104000   call near dword ptr ds:[<&MSVBVM60.__vbaFreeVar>]    ;  msvbvm60.__vbaFreeVar
0042C4F7   >  68 43C54200     push WordsCou.0042C543
0042C4FC   .  EB 25           jmp short WordsCou.0042C523
0042C4FE   .  F645 FC 04      test byte ptr ss:[ebp-0x4],0x4
0042C502   .  74 09           je short WordsCou.0042C50D
0042C504   .  8D4D C0         lea ecx,dword ptr ss:[ebp-0x40]
0042C507   .  FF15 1C124000   call near dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]    ;  msvbvm60.__vbaFreeStr
0042C50D   >  8D4D B0         lea ecx,dword ptr ss:[ebp-0x50][url=http://www.52pojie.cn/index.php]返回首页[/url]
0042C510   .  FF15 18104000   call near dword ptr ds:[<&MSVBVM60.__vbaFreeVar>]    ;  msvbvm60.__vbaFreeVar
0042C516   .  8D45 AC         lea eax,dword ptr ss:[ebp-0x54]
0042C519   .  50              push eax                                             ;  kernel32.BaseThreadInitThunk
0042C51A   .  6A 00           push 0x0
0042C51C   .  FF15 70104000   call near dword ptr ds:[<&MSVBVM60.__vbaAryDestruct>>;  msvbvm60.__vbaAryDestruct
0042C522   .  C3              retn





我自己的机子上vb6测试通过

[Visual Basic] 纯文本查看 复制代码
Private Sub Command1_Click()
Dim expasy, i
Dim regcode, mcode
'regcode = "6666784583-871-1111111111"

'Dim var1()
'val1 = Split(regcode, "-", -1, 0)


mcode = "1111902408"


Dim a1, b1()
a1 = "6666784583"       ‘第一段真码
ReDim b1(Len(a1) - 1)
For i = 0 To Len(a1) - 1
b1(i) = Asc(Mid(a1, i + 1, 1))
Next i


'a1,a2,a3是注册码的第1、2、3段
'b1().b2().b3()是ascii值的数组

Dim eax, ebx, ecx, edx, ebp, esi, edi, ebps7c, ebps30
edi = 0
ebx = 10

Dim b3(10)
For eax = 0 To Len(a1) - 1

ebps7c = eax


If eax = 0 Then
ebps30 = b1(Len(a1) - 1 - eax)

ebx = 0
If Len(a1) - eax - 2 >= 0 Then
ebx = b1(Len(a1) - eax - 2)
End If
esi = ebx
End If
ebx = 0
eax = ebps7c
ebx = b1(eax)
edx = ebps30
ebx = ebx And edx

edx = 0
edx = b1(eax)
edi = edx
edi = edi Or esi
If ebx > 128 Then ebx = 256 - ebx
If edi > 128 Then edi = 256 - edi
Dim A
A = 65   '0x41
eax = A
ecx = eax
eax = edi
esi = 52 '0x34
eax = eax * ebx
edx = 0
edx = eax Mod esi
eax = eax \ esi
ecx = ecx + edx
eax = ecx

esi = edi
esi = edi + ebx

b3(ebps7c) = eax
esi = esi And 255
eax = ebps7c
ebps30 = edi

Next eax

For i = 0 To 9
expasy = expasy & Chr(b3(i))
Next



Text1.Text = expasy
End Sub


2015-12-02-22-18-39.png

免费评分

参与人数 2热心值 +2 收起 理由
吃饭睡觉打豆豆 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
Sound + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.

查看全部评分

Myself_GF 发表于 2015-12-1 14:48
左岸麦田 发表于 2015-12-1 15:06
苏紫方璇 发表于 2015-12-1 15:41
打豆豆出作品了,赶快来支持一下

免费评分

参与人数 1热心值 +1 收起 理由
吃饭睡觉打豆豆 + 1 谢谢苏紫方璇大牛捧场

查看全部评分

Sound 发表于 2015-12-1 16:14


鑒於樓主第壹次發佈技術文章主題,

因達到新手精華標準 特採取 高亮 威望 精华 以茲鼓勵 ,希望堅持自己的愛好、多多發佈技術文獻與作品 並且早壹日成為大牛。

同時也希望他人學習樓主分享精神、技術菜,文章門檻低,不好意思發佈,這都不要緊.還有很多很多人正在破解大門前久久不能入門,也許正在苦惱。也許妳的壹個文章能讓他找到自信。而挽救壹個準備放棄的人
manbajie 发表于 2015-12-1 17:52
嗯,来学习一下
xugong 发表于 2015-12-1 20:17
谢谢分享,学习了
hlrlqy 发表于 2015-12-1 22:44
Myself_GF 发表于 2015-12-1 14:48
楼主精神可嘉,为楼主点赞,虽然自己不会,

头像跟我qq一样
Lewtq 发表于 2015-12-1 22:49
蟹蟹分享,学习ing
soulovess 发表于 2015-12-2 09:12
学习一下,讲的很细致,希望再次看到您的精华。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 01:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表