LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

软件逆向破解反汇编技术零基础入门实战13

admin
2025年12月25日 20:28 本文热度 999
今天分析的软件也是一个crackme,和上面一篇软件大同小异。也是用户名和注册码形式的。

    
和前面文章一样,可以去搜索字符串找关键算法位置。
直接打开Ollydbg把软件拖入F9运行。随便输入假注册码与用户名点注册后,根据错误提示搜索字符串。
按下ALT+M打开内存窗口找到主软件内存段,选择PE头的下个段按回车返回反汇编窗口
反汇编窗口内 右键选择如图:
搜索到的字符串中刚好有提示框的内容
选择字符后双击进入反汇编代码。
上图中,反汇编窗口看到有跳转到错误提示框的有好几个位置。可以根据跳转过来的地址都返回看看哪些是关键的位置都下个断。下断点选择汇编代码按下F2就在对应选择的位置下了CC断点了。
     7个调用位置,我已经全下好了断点,返回软件上点击CHECK按钮。
这里有个cmp esi,eax比较跳转到错误框了。获取了用户名和注册码的长度进行对比。软件要求用户名和注册码长度要一样。修改软件注册码!
     修改注册码也为6位:123456,条件满足后,跳转变灰。继续F8往下分析。
    
走到4011B1又跳转了,分析它在取用户名的字节和固定值比较。
JL:有符号小于则跳转

JA:无符号大于则跳转

用户名的第三位数为0,ASCII码为:30,30小于41所以跳转了。
004021D0  41 7500                                      AzZ.
由这里可以判断的数字转成字母得出用户名只能是大小写字母。将用户名修改下继续分析。
004011A4   .  83F8 00       cmp eax,0x0                              ;  Switch (cases 0..7A)004011A7   .  74 32         je short 13.004011DB004011A9   .  BE FFFFFFFF   mov esi,-0x1004011AE   .  83F8 41       cmp eax,0x41004011B1   .  767         jl short 13.0040121A004011B3   .  83F8 7A       cmp eax,0x7A004011B6   .  77 62         ja short 13.0040121A004011B8   .  83F8 5A       cmp eax,0x5A004011BB   .  703         jl short 13.004011C0004011BD   .  83E8 20       sub eax,0x20                             ;  Cases 5A ('Z'),5B ('['),5C ('\'),5D (']'),5E ('^'),5F ('_'),60 ('`'),61 ('a'),62 ('b'),63 ('c'),64 ('d'),65 ('e'),66 ('f'),67 ('g'),68 ('h'),69 ('i'),6A ('j'),6B ('k'),6C ('l'),6D ('m')... of switch 004011A4004011C0   >  46            inc esi                                  ;  Cases 41 ('A'),42 ('B'),43 ('C'),44 ('D'),45 ('E'),46 ('F'),47 ('G'),48 ('H'),49 ('I'),4A ('J'),4B ('K'),4C ('L'),4D ('M'),4E ('N'),4F ('O'),50 ('P'),51 ('Q'),52 ('R'),53 ('S'),54 ('T')... of switch 004011A4004011C1   .  0FBE96 172040>movsx edx,byte ptr ds:[esi+0x402017]004011C8   .  3BC2          cmp eax,edx004011CA   .^ 75 F4         jnz short 13.004011C0004011CC   .  0FBE86 3C2040>movsx eax,byte ptr ds:[esi+0x40203C]004011D3   .  8981 94214000 mov dword ptr ds:[ecx+0x402194],eax004011D9   .^ EB C1         jmp short 13.0040119C004011DB   >  FF35 AF214000 push dword ptr ds:[0x4021AF]             ;  Case 0 of switch 004011A4004011E1   .  68 94214000   push 13.00402194                         ;  ASCII "8DFF0F7"004011E6   .  68 79214000   push 13.00402179                         ;  ASCII "12345678"004011EB   .  E8 54000000   call 13.00401244
这段代码在循环取用户名的值,循环完后。
004011EB
又进行了2个字符对比。

0018FA38   00402194  ASCII "8DFF0F7"

这里出现的字符是不是正确的注册码呢? 这个程序和第12篇是类似的,根据用户名生成了注册码。

004011F0   .  83F8 01       cmp eax,0x1004011F3   .^ 0F84 DEFEFFFF je 13.004010D7

这个跳转到注册成功的位置。说明那个CALL就是真假码对比。输入得出的注册码,软件也注册完成。

注册码生成算法:

根据用户名的ASCII值在A表内找,找到后返回位置,在到B表内根据位置得出一个字符,循环得出注册码。

A数组内容:

00402010                       41 31 453 432 44 446         A1LSK2DJF00402020  34 48 47 50 33 51 57 435 45 49 52 36 55 54 59  4HGP3QWO5EIR6UTY00402030  538 458 437 43 42 56 39                    Z8MXN7CBV9

B数组内容:

00402030                                      53 55 37 43              SU7C00402040  53 4446 30 39 443 53 44 439 53 44 46 30  SJKF09NCSDO9SDF000402050  39 53 44 52 456 437 38 30 39 53 34 446     9SDRLVK7809S4NF

具体注册机源码,有兴趣的可以自己编写。一个FOR循环取值就行了。


阅读原文:原文链接


该文章在 2025/12/26 11:50:48 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved