某易语言程序的算法分析
0044BC2A 55 push ebp ; 此处下断,输入注册码后按确定按钮后断在这里
0044BC2B 8BEC mov ebp, esp
0044BC2D 81EC 24000000 sub esp, 24
0044BC33 C745 FC 0000000>mov dword ptr [ebp-4], 0
0044BC3A 68 00000000 push 0
0044BC3F BB C4060000 mov ebx, 6C4
0044BC44 E8 2A020000 call 0044BE73
0044BC49 83C4 04 add esp, 4
0044BC4C 8945 F0 mov dword ptr [ebp-10], eax
0044BC4F DB45 F0 fild dword ptr [ebp-10] ; 本机机器码-2141985928,为浮点表示的,将其放在寄存器ST0位
0044BC52 DD5D F0 fstp qword ptr [ebp-10] ; 机器码从ST0位弹出
0044BC55 DD45 F0 fld qword ptr [ebp-10] ; 机器码为浮点表示的,堆栈中显示
0044BC58 DC0D D9C44000 fmul qword ptr [40C4D9] ; 乘以111,结果为浮点表示的
0044BC5E DD5D E8 fstp qword ptr [ebp-18] ; 将ST0位的运算结果弹出
0044BC61 DD45 E8 fld qword ptr [ebp-18] ; 堆栈中显示
0044BC64 DC05 E1C44000 fadd qword ptr [40C4E1] ; 再加上3000074
0044BC6A DD5D E0 fstp qword ptr [ebp-20] ; 此处的真码已经出现,237757437934为真码,是以浮点表示的
0044BC6D 68 01060080 push 80000601 ; 算法为当前机器码*111+3000074
0044BC72 FF75 E4 push dword ptr [ebp-1C]
0044BC75 FF75 E0 push dword ptr [ebp-20]
0044BC78 68 01000000 push 1
0044BC7D BB 68010000 mov ebx, 168
0044BC82 E8 EC010000 call 0044BE73
0044BC87 83C4 10 add esp, 10
0044BC8A 8945 DC mov dword ptr [ebp-24], eax
0044BC8D 8B45 DC mov eax, dword ptr [ebp-24]
0044BC90 50 push eax
0044BC91 8B5D FC mov ebx, dword ptr [ebp-4]
0044BC94 85DB test ebx, ebx
0044BC96 74 09 je short 0044BCA1
0044BC98 53 push ebx
0044BC99 E8 C9010000 call 0044BE67
0044BC9E 83C4 04 add esp, 4
0044BCA1 58 pop eax
0044BCA2 8945 FC mov dword ptr [ebp-4], eax
0044BCA5 6A FF push -1
0044BCA7 6A 08 push 8
0044BCA9 68 37020116 push 16010237
0044BCAE 68 30020152 push 52010230
0044BCB3 E8 C1010000 call 0044BE79 ; 取假码111111111
0044BCB8 83C4 10 add esp, 10
0044BCBB 8945 F8 mov dword ptr [ebp-8], eax
0044BCBE 8B45 FC mov eax, dword ptr [ebp-4]
0044BCC1 50 push eax
0044BCC2 FF75 F8 push dword ptr [ebp-8]
0044BCC5 E8 7D39FDFF call 0041F647 ; 真码在CX中,假码在DX中
0044BCCA 83C4 08 add esp, 8
0044BCCD 83F8 00 cmp eax, 0
0044BCD0 B8 00000000 mov eax, 0
0044BCD5 0F94C0 sete al
0044BCD8 8945 F4 mov dword ptr [ebp-C], eax
0044BCDB 8B5D F8 mov ebx, dword ptr [ebp-8] ; 将假码传给EBX
0044BCDE 85DB test ebx, ebx ; 比较EBX是否为空
0044BCE0 74 09 je short 0044BCEB ; 若不为空则不跳
0044BCE2 53 push ebx
0044BCE3 E8 7F010000 call 0044BE67
0044BCE8 83C4 04 add esp, 4
0044BCEB 837D F4 00 cmp dword ptr [ebp-C], 0
0044BCEF 0F84 71000000 je 0044BD66 ; 这里改NOP后可以成功显示注册成功!
0044BCF5 68 04000080 push 80000004
0044BCFA 6A 00 push 0
0044BCFC 68 E9C44000 push 0040C4E9 ; 提示:
0044BD01 68 01030080 push 80000301
0044BD06 6A 00 push 0
0044BD08 68 40000000 push 40
0044BD0D 68 04000080 push 80000004
0044BD12 6A 00 push 0
0044BD14 68 F0C44000 push 0040C4F0 ; 注册成功!请重启程序!
0044BD19 68 03000000 push 3
0044BD1E BB 00030000 mov ebx, 300
0044BD23 E8 4B010000 call 0044BE73
0044BD28 83C4 28 add esp, 28
0044BD2B 68 01030080 push 80000301
0044BD30 6A 00 push 0
0044BD32 68 3D2E5910 push 10592E3D
0044BD37 68 04000080 push 80000004
0044BD3C 6A 00 push 0
0044BD3E 68 CBC04000 push 0040C0CB
0044BD43 68 01030080 push 80000301
0044BD48 6A 00 push 0
0044BD4A 68 04000000 push 4
0044BD4F 68 03000000 push 3
0044BD54 BB A4060000 mov ebx, 6A4
0044BD59 E8 15010000 call 0044BE73
0044BD5E 83C4 28 add esp, 28
0044BD61 E9 36000000 jmp 0044BD9C
0044BD66 68 04000080 push 80000004
0044BD6B 6A 00 push 0
0044BD6D 68 E9C44000 push 0040C4E9 ; 提示:
0044BD72 68 01030080 push 80000301
0044BD77 6A 00 push 0
0044BD79 68 10000000 push 10
0044BD7E 68 04000080 push 80000004
0044BD83 6A 00 push 0
0044BD85 68 07C54000 push 0040C507 ; 请输入正确的注册码!
0044BD8A 68 03000000 push 3
0044BD8F BB 00030000 mov ebx, 300
0044BD94 E8 DA000000 call 0044BE73
0044BD99 83C4 28 add esp, 28
0044BD9C 8B5D FC mov ebx, dword ptr [ebp-4]
0044BD9F 85DB test ebx, ebx
0044BDA1 74 09 je short 0044BDAC
0044BDA3 53 push ebx
0044BDA4 E8 BE000000 call 0044BE67
0044BDA9 83C4 04 add esp, 4
0044BDAC 8BE5 mov esp, ebp
0044BDAE 5D pop ebp
0044BDAF C3 retn
算法
取当前机器码乘以111再加上3000074
例如-2141985928*111+3000074
易语言注册机代码如下
.版本 2
.程序集 窗口程序集1
.程序集变量 算法, 双精度小数型
.子程序 _按钮1_被单击
算法 = 到数值 (编辑框1.内容) × 到数值 (111) + 到数值 (3000074)
编辑框2.内容 = 到文本 (算法)
置剪辑板文本 (编辑框2.内容)
标签3.标题 = “注册码已经复制,请直接粘贴使用!”
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)