软件找到注册码了。不想就这么算了。想更深入一步。把算法找出来
大家帮帮忙 看看这段代码什么意思?
我真的想学习找算法。已经买了书。
现在请大家帮帮我
多谢了。。
.--------------------------------------------------------------------
0114DDA6 /0F84 C0000000 je 0114DE6C ; 输入假注册码断在这里
0114DDAC |57 push edi ; 入栈
0114DDAD |B9 06000000 mov ecx, 6 ; 传送?(不明白)[别骂我]我正在学习 想笑就笑吧
0114DDB2 |33C0 xor eax, eax ; 逻辑异或
0114DDB4 |8D7C24 14 lea edi, [esp+14] ; 送寄存器
0114DDB8 |F3:AB rep stos dword ptr es:[edi] ; 重复操作前缀
0114DDBA |8D4424 0C lea eax, [esp+C] ; 送寄存器
0114DDBE |53 push ebx ; 入栈
0114DDBF |50 push eax ; 入栈
0114DDC0 |8D4C24 1C lea ecx, [esp+1C] ; 送寄存器
0114DDC4 |6A 18 push 18 ; 入栈
0114DDC6 |51 push ecx ; 入栈
0114DDC7 |53 push ebx ; 入栈
0114DDC8 |53 push ebx ; 入栈
0114DDC9 |68 80400700 push 74080 ; 入栈
0114DDCE |56 push esi ; 入栈
0114DDCF |895C24 2C mov [esp+2C], ebx ; 传送
0114DDD3 |FF15 28242001 call [<&KERNEL32.DeviceIoControl>] ; 子程序调用指令
0114DDD9 |8A4424 17 mov al, [esp+17] ; 传送
0114DDDD |3AC3 cmp al, bl ; 比较指令
0114DDDF |76 78 jbe short 0114DE59 ; 不知道什么意思
0114DDE1 |24 10 and al, 10 ; 逻辑与指令
0114DDE3 |B9 08000000 mov ecx, 8 ; 传送
0114DDE8 |F6D8 neg al ; 求补指令
0114DDEA |1AC0 sbb al, al ; 带借位的减法指令
0114DDEC |8D7C24 2C lea edi, [esp+2C] ; 送寄存器
0114DDF0 |24 B5 and al, 0B5 ; 逻辑与指令
0114DDF2 |8D5424 0C lea edx, [esp+C] ; 送寄存器
0114DDF6 |04 EC add al, 0EC ; 逻辑与指令
0114DDF8 |52 push edx ; 入栈
0114DDF9 |884424 14 mov [esp+14], al ; 传送
0114DDFD |33C0 xor eax, eax ; 逻辑异或指令
0114DDFF |F3:AB rep stos dword ptr es:[edi] ; 重复操作前缀
0114DE01 |AA stos byte ptr es:[edi] ; 存入串指令
0114DE02 |B9 84000000 mov ecx, 84 ; 入栈
0114DE07 |33C0 xor eax, eax ; 逻辑异或指令
0114DE09 |8D7C24 54 lea edi, [esp+54] ; 送寄存器
0114DE0D |53 push ebx ; 入栈
0114DE0E |F3:AB rep stos dword ptr es:[edi] ; 重复操作前缀
0114DE10 |8B4424 18 mov eax, [esp+18] ; 传送
0114DE14 |8D4C24 58 lea ecx, [esp+58] ; 重复操作前缀
0114DE18 |50 push eax ; 入栈
0114DE19 |8D5424 38 lea edx, [esp+38] ; 重复操作前缀
0114DE1D |51 push ecx ; 入栈
0114DE1E |52 push edx ; 入栈
0114DE1F |56 push esi ; 入栈
0114DE20 |E8 4BFDFFFF call 0114DB70 ; 子程序调用指令
0114DE25 |83C4 18 add esp, 18 ; 逻辑与指令
0114DE28 |85C0 test eax, eax ; 测试指令
0114DE2A |74 2D je short 0114DE59 ; 结果为零转移
0114DE2C |B8 D8D62201 mov eax, 0122D6D8 ; 传送
0114DE31 |8D4C24 60 lea ecx, [esp+60] ; 重复操作前缀
0114DE35 |33D2 xor edx, edx ; 逻辑异或指令
0114DE37 |83C0 04 add eax, 4 ; 逻辑与指令
0114DE3A |66:8B11 mov dx, [ecx] ; 传送
0114DE3D |83C1 02 add ecx, 2 ; 逻辑与指令
0114DE40 |8950 FC mov [eax-4], edx ; 传送
0114DE43 |3D D8DA2201 cmp eax, 0122DAD8 ; 比较
0114DE48 ^|7F EB jg short 0114DE35 ; 不知道怎么,这个返回了.原始是 jl 我改成 jg 继续
0114DE4A |68 D8D62201 push 0122D6D8 ; 入栈
0114DE4F |E8 9CFBFFFF call 0114D9F0 ; 子程序调用指令
0114DE54 |83C4 04 add esp, 4 ; 逻辑与指令
0114DE57 |8BD8 mov ebx, eax ; 传送
0114DE59 |56 push esi ; 入栈
0114DE5A |FF15 24242001 call [<&KERNEL32.CloseHandle>] ; 子程序调用指令
0114DE60 |5F pop edi ; 出栈指令
0114DE61 |8BC3 mov eax, ebx ; 传送
0114DE63 |5E pop esi ; 出栈指令
0114DE64 |5B pop ebx ; 出栈指令
0114DE65 |81C4 54020000 add esp, 254 ; 逻辑与指令
0114DE6B |C3 retn
.
.
.--------------------------------------------------------------------
0114DEA6 8BD0 mov edx, eax ; 到了这里 (传送指令)
0114DEA8 BE 01000000 mov esi, 1 ; 传送指令
0114DEAD 85D2 test edx, edx ; 测试
0114DEAF 75 2E jnz short 0114DEDF ; 条件满足了 (不相等就跳转)
.
.
.--------------------------------------------------------------------
0114DEDE 5F pop edi
0114DEDF 8B4424 08 mov eax, [esp+8] ; 跳到了这里 (传送指令)
0114DEE3 85C0 test eax, eax ; 测试
0114DEE5 74 0A je short 0114DEF1 ; 条件满足了 (相等就跳转)
.
.
.--------------------------------------------------------------------
0114DEF1 8BC2 mov eax, edx ; 到了这个 (传送指令)
0114DEF3 5E pop esi ; 出栈
0114DEF4 C3 retn
.
.
.--------------------------------------------------------------------
011A9037 8B4C24 08 mov ecx, [esp+8] ; 又到了这里(传送指令)
011A903B 83C4 04 add esp, 4 ; 加法指令
011A903E 8901 mov [ecx], eax ; 传送
011A9040 C3 retn
.
.
.
01168E19 8B4424 0C mov eax, [esp+C] ; 又到了这里(传送指令)
01168E1D 8B5424 10 mov edx, [esp+10] ; 传送指令
01168E21 8B4C24 14 mov ecx, [esp+14] ; 传送指令
01168E25 83C4 18 add esp, 18 ; 加法
01168E28 C3 retn
.
.
.--------------------------------------------------------------------
0113A3E2 83C4 04 add esp, 4 ; 又到了这里(加法)
0113A3E5 8945 FC mov [ebp-4], eax ; 传送
0113A3E8 DB45 FC fild dword ptr [ebp-4] ; 机器码出来了是 1347657037 (fild dword ptr 不知道什么意思)
0113A3EB DD5D F0 fstp qword ptr [ebp-10] ; 不知道什么意思
0113A3EE DD45 F0 fld qword ptr [ebp-10] ; 不知道什么意思
0113A3F1 DC05 5B571301 fadd qword ptr [113575B] ; 不知道什么意思
0113A3F7 DD5D E8 fstp qword ptr [ebp-18] ; 不知道什么意思
0113A3FA 68 01060080 push 80000601 ; 入栈
0113A3FF FF75 EC push dword ptr [ebp-14] ; 入栈
0113A402 FF75 E8 push dword ptr [ebp-18] ; 入栈
0113A405 68 01000000 push 1 ; 入栈
0113A40A BB 64010000 mov ebx, 164 ; 传送
0113A40F E8 B7180000 call 0113BCCB ; 调用子程序
0113A414 83C4 10 add esp, 10 ; 加法
0113A417 8945 D8 mov [ebp-28], eax ; 传送
0113A41A 8955 DC mov [ebp-24], edx ; 传送
0113A41D DD45 D8 fld qword ptr [ebp-28] ; 不知道什么意思
0113A420 E8 BAD5FFFF call 011379DF ; 调用子程序
0113A425 8945 F8 mov [ebp-8], eax ; 传送
0113A428 8B45 F8 mov eax, [ebp-8] ; 传送
0113A42B E9 00000000 jmp 0113A430 ; 条件实现了 跳到下句
0113A430 8BE5 mov esp, ebp ; 传送
0113A432 5D pop ebp ; 出栈
0113A433 C3 retn
.
.
.--------------------------------------------------------------------
0113B974 68 01030080 push 80000301 ; 又到了这这里 (入栈)
0113B979 6A 00 push 0 ; 入栈
0113B97B 50 push eax ; 入栈
0113B97C 68 01000000 push 1 ; 入栈
0113B981 BB 64010000 mov ebx, 164 ; 传送
0113B986 E8 40030000 call 0113BCCB ; 调用子程序
0113B98B 83C4 10 add esp, 10 ; 加法
0113B98E 8945 F4 mov [ebp-C], eax ; 传送
0113B991 8955 F8 mov [ebp-8], edx ; 传送
0113B994 DD45 F4 fld qword ptr [ebp-C] ; 不知道什么意思 堆栈 ss:[0012F0F0]=1367417252.000000
0113B997 DC0D 41571301 fmul qword ptr [1135741] ; 不知道什么意思
0113B99D DD5D EC fstp qword ptr [ebp-14] ; 不知道什么意思
0113B9A0 DD45 EC fld qword ptr [ebp-14] ; 不知道什么意思
0113B9A3 DC05 41571301 fadd qword ptr [1135741] ; 不知道什么意思
0113B9A9 DD5D E4 fstp qword ptr [ebp-1C] ; 不知道什么意思
0113B9AC DD45 E4 fld qword ptr [ebp-1C] ; 不知道什么意思
0113B9AF E8 2BC0FFFF call 011379DF ; 调用子程序
0113B9B4 68 01030080 push 80000301 ; 入栈
0113B9B9 6A 00 push 0 ; 入栈
0113B9BB 50 push eax ; 入栈
0113B9BC 68 01000000 push 1 ; 入栈
0113B9C1 BB D4010000 mov ebx, 1D4 ; 传送
0113B9C6 E8 00030000 call 0113BCCB ; 调用子程序
0113B9CB 83C4 10 add esp, 10 ; 加法
0113B9CE 8945 E0 mov [ebp-20], eax ; 传送 (注册码出来了: 93F7C00 )
0113B9D1 68 04000080 push 80000004 ; 入栈
0113B9D6 6A 00 push 0 ; 入栈
0113B9D8 8B45 E0 mov eax, [ebp-20] ; 传送
0113B9DB 85C0 test eax, eax ; 测试 eax=0014D8E8, (ASCII "93F7C00")
0113B9DD 75 05 jnz short 0113B9E4 ; 结果不为0则转移
0113B9DF B8 17521301 mov eax, 01135217 ; 传送
0113B9E4 50 push eax ; 入栈 eax=0014D8E8, (ASCII "93F7C00")
0113B9E5 68 01000000 push 1 ; 入栈
0113B9EA BB 68010000 mov ebx, 168 ; 传送
0113B9EF E8 D7020000 call 0113BCCB ; 调用子程序
0113B9F4 83C4 10 add esp, 10 ; 加法
0113B9F7 8945 DC mov [ebp-24], eax ; 传送 eax=0017FAC8, (ASCII "93F7C00")
0113B9FA 8B5D E0 mov ebx, [ebp-20] ; 传送 堆栈 ss:[0012F0DC]=0014D8E8, (ASCII "93F7C00")
0113B9FD 85DB test ebx, ebx ; 比较 ebx=0014D8E8, (ASCII "93F7C00")
0113B9FF 74 09 je short 0113BA0A ; 结果为0则跳
0113BA01 53 push ebx ; 入栈 ebx=0014D8E8, (ASCII "93F7C00")
0113BA02 E8 BE020000 call 0113BCC5 ; 调用子程序
0113BA07 83C4 04 add esp, 4 ; 加法
0113BA0A 8B1D 98216701 mov ebx, [1672198] ; 传送 ds:[01672198]=001851E0, (ASCII "93F7C00")
0113BA10 85DB test ebx, ebx ; 比较
0113BA12 74 09 je short 0113BA1D ; 结果为0则跳
0113BA14 53 push ebx ; 入栈 ebx=001851E0, (ASCII "93F7C00")
0113BA15 E8 AB020000 call 0113BCC5 ; 调用子程序
0113BA1A 83C4 04 add esp, 4 ; 加法
0113BA1D 8B45 DC mov eax, [ebp-24] ; 传送
0113BA20 A3 98216701 mov [1672198], eax ; 传送
0113BA25 6A FF push -1 ; 入栈
0113BA27 6A 08 push 8 ; 入栈
0113BA29 68 6A040116 push 1601046A ; 入栈
0113BA2E 68 56040152 push 52010456 ; 入栈
0113BA33 E8 9F020000 call 0113BCD7 ; 调用子程序
0113BA38 83C4 10 add esp, 10 ; 加法
0113BA3B 8945 FC mov [ebp-4], eax ; 传送 假码出现 eax=001A5110, (ASCII "7474747474")
0113BA3E 8B45 FC mov eax, [ebp-4] ; 传送 堆栈 ss:[0012F0F8]=001A5110, (ASCII "7474747474")
0113BA41 50 push eax ; 入栈
0113BA42 FF35 98216701 push dword ptr [1672198] ; 入栈 ds:[01672198]=0017FAC8, (ASCII "93F7C00")
0113BA48 E8 C1B6FFFF call 0113710E ; 调用子程序
0113BA4D 83C4 08 add esp, 8 ; 加法
0113BA50 83F8 00 cmp eax, 0 ; 比较
0113BA53 B8 00000000 mov eax, 0 ; 传送
0113BA58 0F94C0 sete al ; 条件为假 FALSE al=00
0113BA5B 8945 F8 mov [ebp-8], eax ; 传送
0113BA5E 8B5D FC mov ebx, [ebp-4] ; 传送 堆栈 ss:[0012F0F8]=001A5110, (ASCII "7474747474")
0113BA61 85DB test ebx, ebx ; 测试 ebx=001A5110, (ASCII "7474747474")
0113BA63 74 09 je short 0113BA6E ; 条件为0则跳
0113BA65 53 push ebx ; 入栈 ebx=001A5110, (ASCII "7474747474")
0113BA66 E8 5A020000 call 0113BCC5 ; 调用子程序
0113BA6B 83C4 04 add esp, 4 ; 加法
0113BA6E 837D F8 00 cmp dword ptr [ebp-8], 0 ; 比较
0113BA72 0F84 A3000000 je 0113BB1B ; 条件已经满足了
.
.
.--------------------------------------------------------------------
0113BB1B 6A 00 push 0 ; 跳到了这里 (入栈)
0113BB1D 6A 00 push 0 ; 入栈
0113BB1F 6A 00 push 0 ; 入栈
0113BB21 68 01030080 push 80000301 ; 入栈
0113BB26 6A 00 push 0 ; 入栈
0113BB28 68 00000000 push 0 ; 入栈
0113BB2D 68 04000080 push 80000004 ; 入栈
0113BB32 6A 00 push 0 ; 入栈
0113BB34 68 A8581301 push 011358A8 ; 入栈
0113BB39 68 03000000 push 3 ; 入栈
0113BB3E BB 00030000 mov ebx, 300 ; 传送
0113BB43 E8 83010000 call 0113BCCB ; 调用子程序(弹出 注册码 错误窗口)
---------------------------------------------------------------------
软件找到注册码了。不想就这么算了。想更深入一步。把算法找出来
大家帮帮忙 看看这段代码什么意思?
我真的想学习找算法。已经买了书。
现在请大家帮帮我
多谢了。。
[课程]Linux pwn 探索篇!