该软件计算器查壳是Aspack v2.12加壳,可用脱壳机脱壳或手动脱壳,OD载入脱壳软件,F9运行出现注册框,

输入一个注册号,如"-9282155802"。下硬盘断点bp GetDiskFreeSpaceA 点注册,断下Alt+F9返回到这里

004A9FB7  |.  8B45 98       |mov eax,[local.26]

004A9FBA  |.  F76D A4       |imul [local.23]

004A9FBD  |.  F76D A0       |imul [local.24]

004A9FC0  |.  C1E8 0A       |shr eax,0xA

004A9FC3  |.  C1E8 0A       |shr eax,0xA

004A9FC6  |.  8945 9C       |mov [local.25],eax

004A9FC9  |.  8B45 9C       |mov eax,[local.25]

004A9FCC  |.  33D2          |xor edx,edx

004A9FCE  |.  52            |push edx

004A9FCF  |.  50            |push eax

004A9FD0  |.  8D85 64FFFFFF |lea eax,[local.39]

004A9FD6  |.  E8 99EAF5FF   |call _UnPacke.00408A74

004A9FDB  |.  8B95 64FFFFFF |mov edx,[local.39]

004A9FE1  |.  8D45 B0       |lea eax,[local.20]

004A9FE4  |.  E8 ABA7F5FF   |call _UnPacke.00404794

004A9FE9  |.  8D95 60FFFFFF |lea edx,[local.40]

004A9FEF  |.  8B45 FC       |mov eax,[local.1]

004A9FF2  |.  8B80 88040000 |mov eax,dword ptr ds:[eax+0x488]

004A9FF8  |.  E8 CB2EF9FF   |call _UnPacke.0043CEC8

004A9FFD  |.  8B85 60FFFFFF |mov eax,[local.40]    -----获取到的注册号,如"-9282155802" 16进制为FFFFFFFDD6BD8AE6

004AA003  |.  E8 DC00F6FF   |call _UnPacke.0040A0E4

004AA008  |.  DB7D E8       |fstp tbyte ptr ss:[ebp-0x18]

004AA00B  |.  9B            |wait

004AA00C  |.  DB6D E8       |fld tbyte ptr ss:[ebp-0x18]

004AA00F  |.  E8 408BF5FF   |call _UnPacke.00402B54

004AA014  |.  8945 D8       |mov [local.10],eax            -----先取注册号的16进制后8位送入[local.10] 如D6BD8AE6

004AA017  |.  8955 DC       |mov [local.9],edx             -----剩余部分送入[local.9] 如FFFFFFFD

004AA01A  |.  A1 FCED4A00   |mov eax,dword ptr ds:[0x4AEDFC]

004AA01F  |.  35 C0400818   |xor eax,0x180840C0

004AA024  |.  0D 24080300   |or eax,0x30824

004AA029  |.  0D A32F1A02   |or eax,0x21A2FA3

004AA02E  |.  35 64082100   |xor eax,0x210864

004AA033  |.  0D 60A00900   |or eax,0x9A060

004AA038  |.  33D2          |xor edx,edx

004AA03A  |.  8945 E0       |mov [local.8],eax

004AA03D  |.  8955 E4       |mov [local.7],edx

004AA040  |.  8B45 D8       |mov eax,[local.10]

004AA043  |.  8B55 DC       |mov edx,[local.9]

004AA046  |.  81F0 640AB302 |xor eax,0x2B30A64

004AA04C  |.  81F2 00000000 |xor edx,0x0

004AA052  |.  81F0 26924700 |xor eax,0x479226

004AA058  |.  81F2 00000000 |xor edx,0x0

004AA05E  |.  0D A1240000   |or eax,0x24A1

004AA063  |.  81F0 83720000 |xor eax,0x7283

004AA069  |.  81F2 00000000 |xor edx,0x0

004AA06F  |.  3B55 E4       |cmp edx,[local.7]

004AA072  |.  75 47         |jnz short _UnPacke.004AA0BB

004AA074  |.  3B45 E0       |cmp eax,[local.8]

004AA077  |.  75 42         |jnz short _UnPacke.004AA0BB

004AA079  |.  8B45 E0       |mov eax,[local.8]

004AA07C  |.  8B55 E4       |mov edx,[local.7]

004AA07F  |.  81E0 A32F1A02 |and eax,0x21A2FA3

004AA085  |.  33D2          |xor edx,edx

004AA087  |.  0D 6CF21100   |or eax,0x11F26C

004AA08C  |.  81F0 13C92300 |xor eax,0x23C913

004AA092  |.  81F2 00000000 |xor edx,0x0

004AA098  |.  0D 640AB302   |or eax,0x2B30A64

004AA09D  |.  81F0 13C92300 |xor eax,0x23C913

004AA0A3  |.  81F2 00000000 |xor edx,0x0

004AA0A9  |.  81F0 11980A00 |xor eax,0xA9811

004AA0AF  |.  81F2 00000000 |xor edx,0x0

004AA0B5  |.  8945 E0       |mov [local.8],eax

004AA0B8  |.  8955 E4       |mov [local.7],edx

004AA0BB  |>  8D95 5CFFFFFF |lea edx,[local.41]

004AA0C1  |.  8B45 FC       |mov eax,[local.1]

004AA0C4  |.  8B80 24040000 |mov eax,dword ptr ds:[eax+0x424]

004AA0CA  |.  E8 F92DF9FF   |call _UnPacke.0043CEC8

004AA0CF  |.  8B95 5CFFFFFF |mov edx,[local.41]

004AA0D5  |.  B8 C4ED4A00   |mov eax,_UnPacke.004AEDC4

004AA0DA  |.  E8 49A4F5FF   |call _UnPacke.00404528

004AA0DF  |.  A1 C4ED4A00   |mov eax,dword ptr ds:[0x4AEDC4]

004AA0E4  |.  E8 A3A6F5FF   |call _UnPacke.0040478C

004AA0E9  |.  8BD8          |mov ebx,eax

004AA0EB  |.  85DB          |test ebx,ebx

004AA0ED  |.  7E 3D         |jle short _UnPacke.004AA12C

004AA0EF  |.  BE 01000000   |mov esi,0x1

004AA0F4  |>  8D85 58FFFFFF |/lea eax,[local.42]     ------从这到地址004AA12A为循环,根据序列号位数如3395943118循环10次

004AA0FA  |.  8B15 C4ED4A00 ||mov edx,dword ptr ds:[0x4AEDC4]  ---edx=序列号3395943118

004AA100  |.  8A5432 FF     ||mov dl,byte ptr ds:[edx+esi-0x1] ---取序列号第一位如3

004AA104  |.  E8 ABA5F5FF   ||call _UnPacke.004046B4

004AA109  |.  8B85 58FFFFFF ||mov eax,[local.42]

004AA10F  |.  E8 D4E9F5FF   ||call _UnPacke.00408AE8          ----eax=3

004AA114  |.  8B0485 20CA4A>||mov eax,dword ptr ds:[eax*4+0x4ACA20]  ----取从0x4ACA20开始偏移eax*4的值送入eax

004AA11B  |.  99            ||cdq       ------注意这里判断eax 如=&H80000000 则edx=&HFFFFFFFF

004AA11C  |.  3345 D8       ||xor eax,[local.10]  -----eax=eax xor [local.10]

004AA11F  |.  3355 DC       ||xor edx,[local.9]   -----edx=edx xor [local.9]

004AA122  |.  8945 D8       ||mov [local.10],eax  -----[local.10]=eax

004AA125  |.  8955 DC       ||mov [local.9],edx   -----[local.9]=edx

004AA128  |.  46            ||inc esi

004AA129  |.  4B            ||dec ebx

004AA12A  |.^ 75 C8         |\jnz short _UnPacke.004AA0F4

004AA12C  |>  33F6          |xor esi,esi

004AA12E  |.  B9 20CA4A00   |mov ecx,_UnPacke.004ACA20

004AA133  |>  8B01          |/mov eax,dword ptr ds:[ecx]  ------从这到地址004AA15F循环&H80次 eax=[004ACA20]

004AA135  |.  99            ||cdq                -----同上

004AA136  |.  3345 D8       ||xor eax,[local.10] -----eax=eax xor [local.10]

004AA139  |.  3355 DC       ||xor edx,[local.9]  -----edx=edx xor [local.9]

004AA13C  |.  8945 D8       ||mov [local.10],eax -----[local.10]=eax

004AA13F  |.  8955 DC       ||mov [local.9],edx  -----[local.9]=edx

004AA142  |.  8B81 00020000 ||mov eax,dword ptr ds:[ecx+0x200]   ---eax=[004ACA20+0x200]

004AA148  |.  99            ||cdq               -----同上

004AA149  |.  3345 D8       ||xor eax,[local.10] -----同上

004AA14C  |.  3355 DC       ||xor edx,[local.9] -----同上

004AA14F  |.  8945 D8       ||mov [local.10],eax -----同上

004AA152  |.  8955 DC       ||mov [local.9],edx -----同上

004AA155  |.  46            ||inc esi

004AA156  |.  83C1 04       ||add ecx,0x4

004AA159  |.  81FE 80000000 ||cmp esi,0x80

004AA15F  |.^ 75 D2         |\jnz short _UnPacke.004AA133

004AA161  |.  DF6D D8       |fild qword ptr ss:[ebp-0x28]

004AA164  |.  83C4 F4       |add esp,-0xC

004AA167  |.  DB3C24        |fstp tbyte ptr ss:[esp]

004AA16A  |.  9B            |wait

004AA16B  |.  8D85 54FFFFFF |lea eax,[local.43]

004AA171  |.  E8 E6FEF5FF   |call _UnPacke.0040A05C

004AA176  |.  8B95 54FFFFFF |mov edx,[local.43]     -----------经以上循环得到的值 如"9594311833"

004AA17C  |.  B8 C4ED4A00   |mov eax,_UnPacke.004AEDC4

004AA181  |.  E8 A2A3F5FF   |call _UnPacke.00404528

004AA186  |.  BB 08000000   |mov ebx,0x8

004AA18B  |>  8D45 CC       |/lea eax,[local.13]   ------从这到地址004AA1FB 循环把发上的值最后2位数移到前面,如"3395943118"此值由注册号生成

004AA18E  |.  50            ||push eax

004AA18F  |.  B9 01000000   ||mov ecx,0x1

004AA194  |.  8BD3          ||mov edx,ebx

004AA196  |.  A1 C4ED4A00   ||mov eax,dword ptr ds:[0x4AEDC4]

004AA19B  |.  E8 44A8F5FF   ||call _UnPacke.004049E4

004AA1A0  |.  8D45 A8       ||lea eax,[local.22]

004AA1A3  |.  50            ||push eax

004AA1A4  |.  8D7B 02       ||lea edi,dword ptr ds:[ebx+0x2]

004AA1A7  |.  8BD7          ||mov edx,edi

004AA1A9  |.  B9 01000000   ||mov ecx,0x1

004AA1AE  |.  A1 C4ED4A00   ||mov eax,dword ptr ds:[0x4AEDC4]

004AA1B3  |.  E8 2CA8F5FF   ||call _UnPacke.004049E4

004AA1B8  |.  B8 C4ED4A00   ||mov eax,_UnPacke.004AEDC4

004AA1BD  |.  B9 01000000   ||mov ecx,0x1

004AA1C2  |.  8BD3          ||mov edx,ebx

004AA1C4  |.  E8 5BA8F5FF   ||call _UnPacke.00404A24

004AA1C9  |.  BA C4ED4A00   ||mov edx,_UnPacke.004AEDC4

004AA1CE  |.  8BCB          ||mov ecx,ebx

004AA1D0  |.  8B45 A8       ||mov eax,[local.22]

004AA1D3  |.  E8 94A8F5FF   ||call _UnPacke.00404A6C

004AA1D8  |.  8BD7          ||mov edx,edi

004AA1DA  |.  B8 C4ED4A00   ||mov eax,_UnPacke.004AEDC4

004AA1DF  |.  B9 01000000   ||mov ecx,0x1

004AA1E4  |.  E8 3BA8F5FF   ||call _UnPacke.00404A24

004AA1E9  |.  8BCF          ||mov ecx,edi

004AA1EB  |.  BA C4ED4A00   ||mov edx,_UnPacke.004AEDC4

004AA1F0  |.  8B45 CC       ||mov eax,[local.13]

004AA1F3  |.  E8 74A8F5FF   ||call _UnPacke.00404A6C

004AA1F8  |.  4B            ||dec ebx

004AA1F9  |.  85DB          ||test ebx,ebx

004AA1FB  |.^ 75 8E         |\jnz short _UnPacke.004AA18B

004AA1FD  |.  8D45 B0       |lea eax,[local.20]

004AA200  |.  8B15 C4ED4A00 |mov edx,dword ptr ds:[0x4AEDC4]

004AA206  |.  E8 61A3F5FF   |call _UnPacke.0040456C

生成的值与序列号比较,相同则注册成功,否则错误。根据“异或”性质a xor b=c 则c xor a=b或者c xor b=a 可逆运算

注册流程是:注册号 xor 固定数值=C,在把C的值后2位移到前面即为生成的值 与序列号比较,相同则注册成功。

注册成功后会在注册表\Software\Microsoft\Active Setup\Installed Components位置字符串值Device_AutoCopyTo=0,Version=注册号

注册机编写:把输入的序列号前2位移到后面 xor 固定数值即为注册号

注:CalcVoice1_8.cpx文件是(从内存0x4ACA20开始取大小0x870的数据)

根据注册流程即可编写注册机了,以下用vb.net编写,代码如下

Public Function 打开文件读取字节到数组中(ByVal path As String) As Byte()    ' 打开文件读取字节到数组中

Dim byTmp As Byte()

Dim fs As FileStream

Dim br As BinaryReader

fs = New FileStream(path, FileMode.Open, FileAccess.Read)

br = New BinaryReader(fs)

byTmp = br.ReadBytes(fs.Length)

br.Close()

fs.Close()

fs.Dispose()

Return byTmp

End Function

Function 在数组指定位置读取N字节返回十进制(ByVal array() As Byte, ByVal m As Integer, ByVal n As Integer) As Long

Dim i As Integer

Dim s As String = ""

Dim s0 As String

For i = 0 To n - 1

s0 = Hex(array(m + (n - 1) - i))

If Len(s0) = 1 Then s0 = "0" & s0

s = s & s0

Next

Return ("&H" & s)

End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim EAX, ECX, EDX As Long

Dim m, n As Integer

Dim ss As Double

Dim xlh, dl As String

Dim local_10, local_9 As Double

Dim r, r0, s10, s11, s12 As String

r0 = Mid(TextBox1.Text, 3, Len(TextBox1.Text) - 2) & Mid(TextBox1.Text, 1, 2)    '序列号前2位移到后面

r = Hex(r0)

If Len(r) <= 8 Then

local_10 = "&H" & r

local_9 = 0

Else

local_10 = "&H" & Mid(r, Len(r) - 7, 8)

local_9 = "&H" & Mid(r, 1, Len(r) - 8)

End If

xlh = TextBox1.Text      '序列号

array = 打开文件读取字节到数组中(Application.StartupPath & "\CalcVoice1_8.cpx")

For m = 1 To 10

dl = Mid(xlh, m, 1)

EAX = Val(dl)

'0x4ACA20 开始位置为0

EAX = 在数组指定位置读取N字节返回十进制(array, EAX * 4, 4)

If EAX < 2147483648 Then

EDX = &H0

ElseIf EAX >= 2147483648 Then

EDX = &HFFFFFFFF

End If

EAX = EAX Xor local_10

EDX = EDX Xor local_9

local_10 = EAX

local_9 = EDX

Next

'-------------------------------------------------------------------

ECX = 0

For n = 1 To &H80

EAX = 在数组指定位置读取N字节返回十进制(array, ECX, 4)

If EAX < 2147483648 Then

EDX = &H0

ElseIf EAX >= 2147483648 Then

EDX = &HFFFFFFFF

End If

EAX = EAX Xor local_10

EDX = EDX Xor local_9

local_10 = EAX

local_9 = EDX

EAX = 在数组指定位置读取N字节返回十进制(array, ECX + &H200, 4)

If EAX < 2147483648 Then

EDX = &H0

ElseIf EAX >= 2147483648 Then

EDX = &HFFFFFFFF

End If

EAX = EAX Xor local_10

EDX = EDX Xor local_9

local_10 = EAX

local_9 = EDX

ECX = ECX + &H4

Next

s10 = Hex(local_10)

s11 = Hex(local_9)

s12 = Microsoft.VisualBasic.Right(s11, 8) & Microsoft.VisualBasic.Right(s10, 8)

ss = "&H" & s12

TextBox2.Text = ss

End Sub

html compiler注册机,XXX计算器1.8注册分析和注册机代码相关推荐

  1. cpa机考可以用计算机吗,cpa机考计算器使用方法

    注册会计师作为我国热门考试之一,相信有着非常多的人报考,而在考试胜出者无不是对于考试重点有着一定的把握,下面由出国留学网小编为你精心准备了"2019年注册会计师cpa机考系统计算器使用方法! ...

  2. 半个小时用计算机怎么算,CPA机考计算器操作指南,掌握这些快捷键,考试“延长”半小时!...

    原标题:CPA机考计算器操作指南,掌握这些快捷键,考试"延长"半小时! 注册会计师考试就是一场在有限的时间内得分最多的比拼游戏!不仅要求考生学习各种专业知识,同时还需要掌握一定的策 ...

  3. 时间加减计算器_初级会计职称考试不让带计算器?!手把手教你使用机考系统计算器,再不看就晚了!...

    备考初级会计的你是否还执着于做纸质习题?还在一次次的手动计算?偷偷告诉大家,别人已经开始模拟机考答题啦! 又有人问:"机考自带的计算器用不明白怎么办?",别急,奥奥将在本文为大家介 ...

  4. cpa考试专用计算机,cpa机考计算器

    注册会计师作为我国热门考试之一,相信有着非常多的人报考,而在考试胜出者无不是对于考试重点有着一定的把握,下面由出国留学网小编为你精心准备了"2019年注册会计师cpa机考系统计算器使用方法! ...

  5. 学计算机的考注会,cpa机考计算器

    注册会计师作为我国热门考试之一,相信有着非常多的人报考,而在考试胜出者无不是对于考试重点有着一定的把握,下面由出国留学网小编为你精心准备了"2019年注册会计师cpa机考系统计算器使用方法! ...

  6. 电脑机考要怎么用计算机功能,cpa机考计算器使用方法

    注册会计师作为我国热门考试之一,相信有着非常多的人报考,而在考试胜出者无不是对于考试重点有着一定的把握,下面由出国留学网小编为你精心准备了"2019年注册会计师cpa机考系统计算器使用方法! ...

  7. Android版本的Wannacry文件加密病毒样本分析(附带锁机)

    一.前言 之前一个Wannacry病毒样本在PC端肆意了很久,就是RSA加密文件,勒索钱财.不给钱就删除.但是现在移动设备如此之多,就有一些不法分子想把这个病毒扩散到移动设备了,这几天一个哥们给了一个 ...

  8. Android版本的 Wannacry 文件加密病毒样本分析 附带锁机

    一.前言 之前一个Wannacry病毒样本在PC端肆意了很久,就是RSA加密文件,勒索钱财.不给钱就删除.但是现在移动设备如此之多,就有一些不法分子想把这个病毒扩散到移动设备了,这几天一个哥们给了一个 ...

  9. java swing 注册_Java 基础【04】Swing 组件事件注册

    聪明出于勤奋,天才在于积累.--华罗庚 对上次的三个问题的个人理解: 1) 程序首先是从main函数开始执行的,假设main 函数不是 static ,就要先实例化这个类,然后调用 main 方法,这 ...

  10. 微服务 注册中心的作用_102,谈谈微服务注册中心zookeeperamp;Eureka

    首先,大家要明确一点微服务注册中心是一个重要的组件,解决的是服务的注册和发现的问题,而zookeeper,Eureka都只是其中一款落地实现的产品,再比如Nacos也是如此,所以关键是掌握注册中心的工 ...

最新文章

  1. instanceOf,isInstance,Class,isAssignableFrom区别比较
  2. 2017-9-17pat甲级 A
  3. Python 2.7 将于7个月后终结,这是你需要了解的3.X炫酷新特性
  4. 基本矩阵的基本解法之8点算法
  5. 央视报道:荣耀智慧屏或搭载华为鸿蒙系统
  6. mysql之批量删除
  7. 七款非常好用的电脑数据恢复软件推荐
  8. 即席查询—— Kylin使用
  9. ET和LT的原理和区别
  10. MachineLearning 4. 癌症诊断方法之 K-邻近算法(KNN)
  11. go语言读取xls表格xls文件操作替代解决方案
  12. Dlib模型之驾驶员疲劳检测总结(可视化界面)
  13. 获取字符串被分割后的总数组长度 java 类似UBound()方法
  14. @所有人,你有一份来自合宙的礼品待领取
  15. 百元级冷门高音质蓝牙耳机推荐,300左右为什么不试试这几款蓝牙耳机?
  16. 初识python评课稿_pythonrange函数
  17. 10 行代码,集算器实现写诗机器人
  18. 2021-10-16 每天几个LCEDA小知识——修改原理图纸尺寸
  19. 测试狗:热重分析曲线怎么看?热重分析原理和特点解析
  20. 没有终结点在侦听可以接受消息的*这通常是由于不正确的地址或者 SOAP操作导致的

热门文章

  1. Android设置标题栏图标
  2. Linux将文件复制粘贴到另外一个位置
  3. 【SpringBoot_ANNOTATIONS】组件注册 04 @Scope 设置组件作用域
  4. android布局性能,Android开发——布局性能优化的一些技巧(一)
  5. ecshop 邮件模板 html,给ecshop后台增加新的邮件模板
  6. c语言怎样设计程序界面,「分享」C语言如何编写图形界面
  7. java服务端开发 php_Java和 PHP哪种语言更适合直播系统后台开发
  8. POJ 3070 Fibonacci 矩阵快速幂模板
  9. SpringMVC项目搭建及遇到的问题
  10. hibernate中实体类对象的四种状态