lzq1973 发表于 2007-12-15 17:30:53

【破文标题】数字翻译器 2.0.0.3 解码分析

【破文标题】数字翻译器 2.0.0.3 解码分析
【破文作者】lzq1973
【作者邮箱】[email protected]
【作者主页】http://my.winzheng.com/?455397
【破解工具】OD、PEiD、C32Asm
【破解平台】WinXP
【软件名称】数字翻译器 2.0.0.3
【软件大小】405KB
【原版下载】http://www.sharebank.com.cn/soft/SoftView_23565.htm

【保护方式】SN
【软件简介】  本软件能快捷地将15位以下的数值翻译为英文、英文金额及中文大写金额表达,减少人工输入的失误。
    因币种及习惯不同,英文金额表达方式有所不同,本软件只根据香港公司商务英语惯用方式自动生成英文金额。
  中文金额根据现行会计金额规则自动翻译。
    一键复制,随处可贴。

【破解声明】俺是只小小鸟,纯为学习,愿与大家分享!
------------------------------------------------------------------------
【破解过程】    OD载入,断在这里

004B9C68/.55         push    ebp
004B9C69|.8BEC       mov   ebp, esp
004B9C6B|.B9 0600000>mov   ecx, 6
004B9C70|>6A 00      /push    0
004B9C72|.6A 00      |push    0
004B9C74|.49         |dec   ecx
004B9C75|.^ 75 F9      \jnz   short 004B9C70
004B9C77|.51         push    ecx
004B9C78|.53         push    ebx
004B9C79|.56         push    esi
004B9C7A|.8BD8       mov   ebx, eax
004B9C7C|.33C0       xor   eax, eax
004B9C7E|.55         push    ebp
004B9C7F|.68 509F4B0>push    004B9F50
004B9C84|.64:FF30    push    dword ptr fs:
004B9C87|.64:8920    mov   fs:, esp
004B9C8A|.8D55 F8    lea   edx,
004B9C8D|.8B83 D4040>mov   eax,
004B9C93|.E8 C4E1F8F>call    00447E5C
004B9C98|.837D F8 00 cmp   dword ptr , 0
004B9C9C|.75 2F      jnz   short 004B9CCD
004B9C9E|.8B83 D4040>mov   eax,
004B9CA4|.8B10       mov   edx,
004B9CA6|.FF92 C4000>call   
004B9CAC|.6A 40      push    40
004B9CAE|.68 609F4B0>push    004B9F60                         ;提示
004B9CB3|.68 689F4B0>push    004B9F68                         ;用户名不能为!
004B9CB8|.A1 68214C0>mov   eax,
004B9CBD|.E8 EA49F9F>call    0044E6AC
004B9CC2|.50         push    eax                              ; |hOwner
004B9CC3|.E8 F4D7F4F>call    <jmp.&USER32.MessageBoxA>      ; \MessageBoxA
004B9CC8|.E9 4602000>jmp   004B9F13
004B9CCD|>8D55 F4    lea   edx,
004B9CD0|.8B83 D8040>mov   eax,
004B9CD6|.E8 81E1F8F>call    00447E5C
004B9CDB|.837D F4 00 cmp   dword ptr , 0
004B9CDF|.75 2F      jnz   short 004B9D10
004B9CE1|.8B83 D8040>mov   eax,
004B9CE7|.8B10       mov   edx,
004B9CE9|.FF92 C4000>call   
004B9CEF|.6A 40      push    40
004B9CF1|.68 609F4B0>push    004B9F60                         ;提示
004B9CF6|.68 789F4B0>push    004B9F78                         ;邮箱不能为空!
004B9CFB|.A1 68214C0>mov   eax,
004B9D00|.E8 A749F9F>call    0044E6AC
004B9D05|.50         push    eax                              ; |hOwner
004B9D06|.E8 B1D7F4F>call    <jmp.&USER32.MessageBoxA>      ; \MessageBoxA
004B9D0B|.E9 0302000>jmp   004B9F13
004B9D10|>8D55 F0    lea   edx,
004B9D13|.8B83 DC040>mov   eax,
004B9D19|.E8 3EE1F8F>call    00447E5C
004B9D1E|.837D F0 00 cmp   dword ptr , 0
004B9D22|.75 2F      jnz   short 004B9D53
004B9D24|.8B83 DC040>mov   eax,
004B9D2A|.8B10       mov   edx,
004B9D2C|.FF92 C4000>call   
004B9D32|.6A 40      push    40
004B9D34|.68 609F4B0>push    004B9F60                         ;提示
004B9D39|.68 889F4B0>push    004B9F88                         ;注册码不能为空!
004B9D3E|.A1 68214C0>mov   eax,
004B9D43|.E8 6449F9F>call    0044E6AC
004B9D48|.50         push    eax                              ; |hOwner
004B9D49|.E8 6ED7F4F>call    <jmp.&USER32.MessageBoxA>      ; \MessageBoxA
004B9D4E|.E9 C001000>jmp   004B9F13
004B9D53|>8D55 EC    lea   edx,
004B9D56|.8B83 D8040>mov   eax,
004B9D5C|.E8 FBE0F8F>call    00447E5C
004B9D61|.8B45 EC    mov   eax,                   ;(ASCII "[email protected]")
004B9D64|.E8 F7B0FFF>call    004B4E60
004B9D69|.84C0       test    al, al
004B9D6B|.0F84 78010>je      004B9EE9
004B9D71|.8D55 E8    lea   edx,
004B9D74|.B8 A09F4B0>mov   eax, 004B9FA0                  ;c:\
004B9D79|.E8 2EB2FFF>call    004B4FAC
004B9D7E|.8D45 E8    lea   eax,
004B9D81|.50         push    eax
004B9D82|.8D55 DC    lea   edx,
004B9D85|.8B83 D4040>mov   eax,
004B9D8B|.E8 CCE0F8F>call    00447E5C
004B9D90|.8B45 DC    mov   eax,                   ;用户名(ASCII "Administrator")
004B9D93|.8D55 E0    lea   edx,
004B9D96|.E8 95B1FFF>call    004B4F30
004B9D9B|.8B45 E0    mov   eax,                   ;(ASCII "s!#s#&#F#*#F$h$s$@#!$s#f$@")
004B9D9E|.8D55 E4    lea   edx,
004B9DA1|.E8 8AB1FFF>call    004B4F30
004B9DA6|.8B55 E4    mov   edx,                   ;(ASCII "$h@!@h$h@h@#@hs#@h@L@hs#@s#%@s$h@ss~@h@!@s$h@h##@ss~")
004B9DA9|.58         pop   eax
004B9DAA|.E8 C5ACF4F>call    00404A74
004B9DAF|.8B45 E8    mov   eax,                   ;(ASCII "5F44B466$h@!@h$h@h@#@hs#@h@L@hs#@s#%@s$h@ss~@h@!@s$h@h##@ss~")
004B9DB2|.8D55 FC    lea   edx,
004B9DB5|.E8 76B1FFF>call    004B4F30
004B9DBA|.8D55 D8    lea   edx,
004B9DBD|.8B83 DC040>mov   eax,
004B9DC3|.E8 94E0F8F>call    00447E5C
004B9DC8|.8B45 D8    mov   eax,
004B9DCB|.8B55 FC    mov   edx,                      ;(ASCII "hhs#hshss@hsh#h#@s#%s~@!s~#%@s#%s~#%s~@hs~#%$h@hs~#%s~s^s~#%$h@hs~$h@h@hs~$h@s#%s~$h$h$*s~#%s~@!s~$h@s#%s~#%@h@hs~$h$h$*")
004B9DCE|.E8 E5ADF4F>call    00404BB8
004B9DD3|.0F85 F2000>jnz   004B9ECB
004B9DD9|.6A 40      push    40
004B9DDB|.68 609F4B0>push    004B9F60                         ;提示
004B9DE0|.68 A49F4B0>push    004B9FA4                         ;注册成功!
004B9DE5|.A1 68214C0>mov   eax,
004B9DEA|.E8 BD48F9F>call    0044E6AC
004B9DEF|.50         push    eax                              ; |hOwner
004B9DF0|.E8 C7D6F4F>call    <jmp.&USER32.MessageBoxA>      ; \MessageBoxA
004B9DF5|.C705 C8224>mov   dword ptr , -1
004B9DFF|.BA B89F4B0>mov   edx, 004B9FB8                  ;已注册,无限制
004B9E04|.8B83 BC040>mov   eax,
004B9E0A|.E8 7DE0F8F>call    00447E8C
004B9E0F|.B2 01      mov   dl, 1
004B9E11|.8B83 D4040>mov   eax,
004B9E17|.E8 1843F8F>call    0043E134
004B9E1C|.B2 01      mov   dl, 1
004B9E1E|.8B83 D8040>mov   eax,
004B9E24|.E8 0B43F8F>call    0043E134
004B9E29|.B2 01      mov   dl, 1
004B9E2B|.8B83 DC040>mov   eax,
004B9E31|.E8 FE42F8F>call    0043E134
004B9E36|.33D2       xor   edx, edx
004B9E38|.8B83 E8040>mov   eax,
004B9E3E|.8B08       mov   ecx,
004B9E40|.FF51 64    call   
004B9E43|.B2 01      mov   dl, 1
004B9E45|.A1 BC6A430>mov   eax,
004B9E4A|.E8 D9CDF7F>call    00436C28
004B9E4F|.8BF0       mov   esi, eax
004B9E51|.BA 0100008>mov   edx, 80000001
004B9E56|.8BC6       mov   eax, esi
004B9E58|.E8 A7CEF7F>call    00436D04
004B9E5D|.B1 01      mov   cl, 1
004B9E5F|.BA D09F4B0>mov   edx, 004B9FD0                  ;software\microsoft\windows\currentversion\nt
004B9E64|.8BC6       mov   eax, esi
004B9E66|.E8 DDCFF7F>call    00436E48
004B9E6B|.8D55 D4    lea   edx,
004B9E6E|.8B83 D4040>mov   eax,
004B9E74|.E8 E3DFF8F>call    00447E5C
004B9E79|.8B4D D4    mov   ecx,
004B9E7C|.BA 08A04B0>mov   edx, 004BA008                  ;pname
004B9E81|.8BC6       mov   eax, esi
004B9E83|.E8 34D3F7F>call    004371BC
004B9E88|.8D55 D0    lea   edx,
004B9E8B|.8B83 D8040>mov   eax,
004B9E91|.E8 C6DFF8F>call    00447E5C
004B9E96|.8B4D D0    mov   ecx,
004B9E99|.BA 18A04B0>mov   edx, 004BA018                  ;pemail
004B9E9E|.8BC6       mov   eax, esi
004B9EA0|.E8 17D3F7F>call    004371BC
004B9EA5|.8D55 CC    lea   edx,
004B9EA8|.8B83 DC040>mov   eax,
004B9EAE|.E8 A9DFF8F>call    00447E5C
004B9EB3|.8B4D CC    mov   ecx,
004B9EB6|.BA 28A04B0>mov   edx, 004BA028                  ;psn
004B9EBB|.8BC6       mov   eax, esi
004B9EBD|.E8 FAD2F7F>call    004371BC
004B9EC2|.8BC6       mov   eax, esi
004B9EC4|.E8 0F9BF4F>call    004039D8
004B9EC9|.EB 48      jmp   short 004B9F13
004B9ECB|>6A 40      push    40
004B9ECD|.68 609F4B0>push    004B9F60                         ;提示
004B9ED2|.68 2CA04B0>push    004BA02C                         ;请核对作者提供的注册资料!
004B9ED7|.A1 68214C0>mov   eax,
004B9EDC|.E8 CB47F9F>call    0044E6AC
004B9EE1|.50         push    eax                              ; |hOwner
004B9EE2|.E8 D5D5F4F>call    <jmp.&USER32.MessageBoxA>      ; \MessageBoxA
004B9EE7|.EB 2A      jmp   short 004B9F13
004B9EE9|>6A 40      push    40
004B9EEB|.68 609F4B0>push    004B9F60                         ;提示
004B9EF0|.68 48A04B0>push    004BA048                         ;email格式不正确!
004B9EF5|.A1 68214C0>mov   eax,
004B9EFA|.E8 AD47F9F>call    0044E6AC
004B9EFF|.50         push    eax                              ; |hOwner
004B9F00|.E8 B7D5F4F>call    <jmp.&USER32.MessageBoxA>      ; \MessageBoxA
004B9F05|.8B83 D8040>mov   eax,
004B9F0B|.8B10       mov   edx,
004B9F0D|.FF92 C4000>call   
004B9F13|>33C0       xor   eax, eax
004B9F15|.5A         pop   edx
004B9F16|.59         pop   ecx
004B9F17|.59         pop   ecx
004B9F18|.64:8910    mov   fs:, edx
004B9F1B|.68 579F4B0>push    004B9F57
004B9F20|>8D45 CC    lea   eax,
004B9F23|.BA 0500000>mov   edx, 5
004B9F28|.E8 A3A8F4F>call    004047D0
004B9F2D|.8D45 E0    lea   eax,
004B9F30|.BA 0300000>mov   edx, 3
004B9F35|.E8 96A8F4F>call    004047D0
004B9F3A|.8D45 EC    lea   eax,
004B9F3D|.BA 0400000>mov   edx, 4
004B9F42|.E8 89A8F4F>call    004047D0
004B9F47|.8D45 FC    lea   eax,
004B9F4A|.E8 5DA8F4F>call    004047AC
004B9F4F\.C3         retn
004B9F50   .^ E9 D7A1F4F>jmp   0040412C
004B9F55   .^ EB C9      jmp   short 004B9F20
004B9F57   .5E         pop   esi
004B9F58   .5B         pop   ebx
004B9F59   .8BE5       mov   esp, ebp
004B9F5B   .5D         pop   ebp
004B9F5C   .C3         retn

==============004B9D96|.E8 95B1FFF>call    004B4F30================

004B4F30/$55         push    ebp                              ;——》来到这里
004B4F31|.8BEC       mov   ebp, esp
004B4F33|.53         push    ebx
004B4F34|.56         push    esi
004B4F35|.57         push    edi
004B4F36|.8BFA       mov   edi, edx
004B4F38|.8BF0       mov   esi, eax                         ;新的字符串(ASCII "5F44B466$h@!@h$h@h@#@hs#@h@L@hs#@s#%@s$h@ss~@h@!@s$h@h##@ss~")
004B4F3A|.8BC6       mov   eax, esi
004B4F3C|.E8 2BFBF4F>call    00404A6C
004B4F41|.8BD0       mov   edx, eax                         ;新字符串的长度
004B4F43|.03D2       add   edx, edx                         ;EDX=EDX+EDX
004B4F45|.8BC7       mov   eax, edi
004B4F47|.E8 ACFEF4F>call    00404DF8
004B4F4C|.8BC6       mov   eax, esi
004B4F4E|.E8 19FBF4F>call    00404A6C
004B4F53|.8BD8       mov   ebx, eax
004B4F55|.83FB 01    cmp   ebx, 1
004B4F58|.7C 4C      jl      short 004B4FA6
004B4F5A|>8BC7       /mov   eax, edi
004B4F5C|.E8 63FDF4F>|call    00404CC4
004B4F61|.8BD3       |mov   edx, ebx
004B4F63|.03D2       |add   edx, edx
004B4F65|.8A4C1E FF|mov   cl,                ;当前字符(倒取)
004B4F69|.80E1 0F    |and   cl, 0F
004B4F6C|.81E1 FF000>|and   ecx, 0FF
004B4F72|.8A89 88034>|mov   cl,                 ;奇数位字符            4C0388=~!@hsh#$%FLY^&*f
004B4F78|.884C10 FF|mov   , cl
004B4F7C|.8BC7       |mov   eax, edi
004B4F7E|.E8 41FDF4F>|call    00404CC4
004B4F83|.8BD3       |mov   edx, ebx
004B4F85|.03D2       |add   edx, edx
004B4F87|.8A4C1E FF|mov   cl,
004B4F8B|.80E1 F0    |and   cl, 0F0
004B4F8E|.81E1 FF000>|and   ecx, 0FF
004B4F94|.C1E9 04    |shr   ecx, 4
004B4F97|.8A89 88034>|mov   cl,                 ;偶数位字符
004B4F9D|.884C10 FE|mov   , cl
004B4FA1|.4B         |dec   ebx
004B4FA2|.85DB       |test    ebx, ebx
004B4FA4|.^ 75 B4      \jnz   short 004B4F5A
004B4FA6|>5F         pop   edi
004B4FA7|.5E         pop   esi
004B4FA8|.5B         pop   ebx
004B4FA9|.5D         pop   ebp
004B4FAA\.C3         retn


------------------------------------------------------------------------
【破解总结】
1、常里字串~!@hsh#$%FLY^&*f;
2、用户名取当前计算机用户;
   依次取用户名的奇数位字符ASCII十进制与15进行与运算后值再与255进行与运算的值,在常量串取相应位数字符;
   依次取用户名的偶数位字符ASCII十进制与240进行与运算后值再与255进行与运算的值,在常量串取相应位数字符;
   奇偶数字所对应的字符组成新的字串。
3、再用新的字串依上述方法生成新字串;
4、机器码+新字串,组成另一新字串;
5、再用新的字串依上述方法生成新字串就是注册码。

附注册机源码:

.版本 2

用户名 = 编辑框3.内容
len = 取文本长度 (用户名)
字串量1 = “~!@hsh#$%FLY^&*f”
ebx = len
.计次循环首 (len, i)' 用户名参与运算
    ebx = ebx + ebx
    ' 下面的是奇数位字符
    c = 取代码 (用户名, len - i + 1)
    c = 位与 (c, 15)
    c = 位与 (c, 255)
    sn1 = 取文本中间 (字串量1, c + 1, 1) + sn1
    ' 下面的是偶数位字符
    c = 取代码 (用户名, len - i + 1)
    c = 位与 (c, 240)
    c = 位与 (c, 255)
    c = 右移 (c, 4)
    sn1 = 取文本中间 (字串量1, c + 1, 1) + sn1
    ebx = ebx - 1
.计次循环尾 ()
' 第二次,用第一次产生的字符串参与运算
Sn = sn1
sn1 = “”
len = 取文本长度 (Sn)
ebx = len
.计次循环首 (len, i)
    ebx = ebx + ebx
    ' 下面的是奇数位字符
    c = 取代码 (Sn, len - i + 1)
    c = 位与 (c, 15)
    c = 位与 (c, 255)
    sn1 = 取文本中间 (字串量1, c + 1, 1) + sn1
    ' 下面的是偶数位字符
    c = 取代码 (Sn, len - i + 1)
    c = 位与 (c, 240)
    c = 位与 (c, 255)
    c = 右移 (c, 4)
    sn1 = 取文本中间 (字串量1, c + 1, 1) + sn1
    ebx = ebx - 1
.计次循环尾 ()
Sn = 编辑框1.内容 + sn1

' 第三次,用第二次产生的字符串参与运算
' Sn = sn1
sn1 = “”
len = 取文本长度 (Sn)
ebx = len
.计次循环首 (len, i)
    ebx = ebx + ebx
    ' 下面的是奇数位字符
    c = 取代码 (Sn, len - i + 1)
    c = 位与 (c, 15)
    c = 位与 (c, 255)
    sn1 = 取文本中间 (字串量1, c + 1, 1) + sn1
    ' 下面的是偶数位字符
    c = 取代码 (Sn, len - i + 1)
    c = 位与 (c, 240)
    c = 位与 (c, 255)
    c = 右移 (c, 4)
    sn1 = 取文本中间 (字串量1, c + 1, 1) + sn1
    ebx = ebx - 1
.计次循环尾 ()

------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!

wan 发表于 2007-12-15 21:18:32

向楼主学习啊,楼主的易学得好快

柳韵荷风 发表于 2007-12-16 10:00:15

破文写的不错,学习一下。
页: [1]
查看完整版本: 【破文标题】数字翻译器 2.0.0.3 解码分析