"crackme#10のIDは、どうやって算出されているか"        著者:東洋人  改訂:ac

crackme#10のIDは、GetVolumeInformationでディスクメディアにつけられた「ボリュームシリアルナンバー」をを取得しています


このボリュームシリアルナンバーは、フォーマット時に'ほぼ'ランダムに決められているようですので(っと書いてある(汗 )

実際問題、自分の使っているドライブ(crackme#10が入っているドライブ)のシリアルナンバーは・・・試しに、下記からDLして

試して見てください。


>Volume Serial Number Editor
http://www.vector.co.jp/soft/win95/util/se185098.html

確認だけにしておいてね(^^)。自分の場合は、54a5-8ef0(54a58ef0)と出ます。
それでは、早々、Ollyで確認してみますと

00401169 . 8B06 MOV EAX,DWORD PTR DS:[ESI]
で、見事!!、EAXに54A58EF0が、入りましたね(^^)


0040116B . C1C0 0D ROL EAX,0D EAX=B1DE0A94
0040116E . 35 98BADCFE XOR EAX,FEDCBA98 EAX=4F02B00C
00401173 . C1C8 07 ROR EAX,7 EAX=189E0560
00401176 . 35 10325476 XOR EAX,76543210 EAX=6ECA3770
0040117B . B9 00E1F505 MOV ECX,5F5E100 ECX=5F5E100
00401180 . 8BD8 MOV EBX,EAX EBX=6ECA3770
00401182 . 33D2 XOR EDX,EDX EDX clear
00401184 . F7F1 DIV ECX EAX=00000012 ECX=03806570
00401186 . 8BDA MOV EBX,EDX EBX=03806570
00401188 . BE E6314000 MOV ESI,CRKME10.004031E6 ; ASCII "ID:00000000"
0040118D . 83C6 03 ADD ESI,3
00401190 . B9 80969800 MOV ECX,989680 ECX=00989680
00401195 > 83FB 00 CMP EBX,0 ★★★>ここから
00401198 . 74 20 JE SHORT CRKME10.004011BA
0040119A . 8BC3 MOV EAX,EBX
0040119C . 33D2 XOR EDX,EDX
0040119E . F7F1 DIV ECX
004011A0 . 8846 09 MOV BYTE PTR DS:[ESI+9],AL
004011A3 . 83C0 30 ADD EAX,30
004011A6 . 8806 MOV BYTE PTR DS:[ESI],AL
004011A8 . 46 INC ESI
004011A9 . 52 PUSH EDX
004011AA . 8BC1 MOV EAX,ECX
004011AC . B9 0A000000 MOV ECX,0A
004011B1 . 33D2 XOR EDX,EDX
004011B3 . F7F1 DIV ECX
004011B5 . 8BC8 MOV ECX,EAX
004011B7 . 5B POP EBX
004011B8 .^EB DB JMP SHORT CRKME10.00401195 ★ここまでLOOP(計8回)


00401195 > 83FB 00 CMP EBX,0 ★★★
00401198 . 74 20 JE SHORT CRKME10.004011BA
0040119A . 8BC3 MOV EAX,EBX EAX=03806570
0040119C . 33D2 XOR EDX,EDX          EDX clear
0040119E . F7F1 DIV ECX            EAX=5 EDX=8574F0
004011A0 . 8846 09 MOV BYTE PTR DS:[ESI+9],AL   ESIの示す4031E9+9のアドレスに05を格納
004011A3 . 83C0 30 ADD EAX,30  EAX=35(5)
004011A6 . 8806 MOV BYTE PTR DS:[ESI],AL    ESIの示すアドレスに35(5)を格納
004011A8 . 46 INC ESI            4031E9+1=4031EA
004011A9 . 52 PUSH EDX            
004011AA . 8BC1 MOV EAX,ECX EAX=00989680
004011AC . B9 0A000000 MOV ECX,0A ECX=0A
004011B1 . 33D2 XOR EDX,EDX EDX clear
004011B3 . F7F1 DIV ECX EAX=000F4240
004011B5 . 8BC8 MOV ECX,EAX ECX=000F4240
004011B7 . 5B POP EBX EBX=008574F0
004011B8 .^EB DB JMP SHORT CRKME10.00401195 ★LOOP


00401195 > 83FB 00 CMP EBX,0 ★★★
00401198 . 74 20 JE SHORT CRKME10.004011BA
0040119A . 8BC3 MOV EAX,EBX EAX=008574F0
0040119C . 33D2 XOR EDX,EDX          EDX clear
0040119E . F7F1 DIV ECX            EAX=8 EDX=000B62F0
004011A0 . 8846 09 MOV BYTE PTR DS:[ESI+9],AL   ESIの示す4031EA+9のアドレスに08を格納
004011A3 . 83C0 30 ADD EAX,30   EAX=38(8)
004011A6 . 8806 MOV BYTE PTR DS:[ESI],AL    ESIの示すアドレスに38(8)を格納
004011A8 . 46 INC ESI            4031EA+1=4031EB
004011A9 . 52 PUSH EDX            
004011AA . 8BC1 MOV EAX,ECX EAX=000F4240
004011AC . B9 0A000000 MOV ECX,0A ECX=0A
004011B1 . 33D2 XOR EDX,EDX EDX clear
004011B3 . F7F1 DIV ECX EAX=000186A0
004011B5 . 8BC8 MOV ECX,EAX ECX=000186A0
004011B7 . 5B POP EBX EBX=000B62F0
004011B8 .^EB DB JMP SHORT CRKME10.00401195 ★LOOP


00401195 > 83FB 00 CMP EBX,0 ★★★
00401198 . 74 20 JE SHORT CRKME10.004011BA
0040119A . 8BC3 MOV EAX,EBX EAX=000B62F0
0040119C . 33D2 XOR EDX,EDX          EDX clear
0040119E . F7F1 DIV ECX            EAX=7 EDX=0000B490
004011A0 . 8846 09 MOV BYTE PTR DS:[ESI+9],AL   ESIの示す4031EB+9のアドレスに07を格納
004011A3 . 83C0 30 ADD EAX,30   EAX=37(7)
004011A6 . 8806 MOV BYTE PTR DS:[ESI],AL    ESIの示すアドレスに37(7)を格納
004011A8 . 46 INC ESI            4031EB+1=4031EC
004011A9 . 52 PUSH EDX            
004011AA . 8BC1 MOV EAX,ECX EAX=000186A0
004011AC . B9 0A000000 MOV ECX,0A ECX=0A
004011B1 . 33D2 XOR EDX,EDX EDX clear
004011B3 . F7F1 DIV ECX EAX=00002710
004011B5 . 8BC8 MOV ECX,EAX ECX=00002710
004011B7 . 5B POP EBX EBX=0000B490
004011B8 .^EB DB JMP SHORT CRKME10.00401195 ★LOOP


00401195 > 83FB 00 CMP EBX,0 ★★★
00401198 . 74 20 JE SHORT CRKME10.004011BA
0040119A . 8BC3 MOV EAX,EBX EAX=0000B490
0040119C . 33D2 XOR EDX,EDX          EDX clear
0040119E . F7F1 DIV ECX            EAX=4 EDX=00001850
004011A0 . 8846 09 MOV BYTE PTR DS:[ESI+9],AL   ESIの示す4031EC+9のアドレスに04を格納
004011A3 . 83C0 30 ADD EAX,30   EAX=34(4)
004011A6 . 8806 MOV BYTE PTR DS:[ESI],AL    ESIの示すアドレスに34(4)を格納
004011A8 . 46 INC ESI            4031EC+1=4031ED
004011A9 . 52 PUSH EDX            
004011AA . 8BC1 MOV EAX,ECX EAX=00002710
004011AC . B9 0A000000 MOV ECX,0A ECX=0A
004011B1 . 33D2 XOR EDX,EDX EDX clear
004011B3 . F7F1 DIV ECX EAX=000003E8
004011B5 . 8BC8 MOV ECX,EAX ECX=000003E8
004011B7 . 5B POP EBX EBX=00001850
004011B8 .^EB DB JMP SHORT CRKME10.00401195 ★LOOP


00401195 > 83FB 00 CMP EBX,0 ★★★
00401198 . 74 20 JE SHORT CRKME10.004011BA
0040119A . 8BC3 MOV EAX,EBX EAX=00001850
0040119C . 33D2 XOR EDX,EDX          EDX clear
0040119E . F7F1 DIV ECX            EAX=6 EDX=000000E0
004011A0 . 8846 09 MOV BYTE PTR DS:[ESI+9],AL   ESIの示す4031ED+9のアドレスに06を格納
004011A3 . 83C0 30 ADD EAX,30   EAX=36(6)
004011A6 . 8806 MOV BYTE PTR DS:[ESI],AL    ESIの示すアドレスに36(6)を格納
004011A8 . 46 INC ESI            4031ED+1=4031EE
004011A9 . 52 PUSH EDX            
004011AA . 8BC1 MOV EAX,ECX EAX=000003E8
004011AC . B9 0A000000 MOV ECX,0A ECX=0A
004011B1 . 33D2 XOR EDX,EDX EDX clear
004011B3 . F7F1 DIV ECX EAX=00000064
004011B5 . 8BC8 MOV ECX,EAX ECX=00000064
004011B7 . 5B POP EBX EBX=000000E0
004011B8 .^EB DB JMP SHORT CRKME10.00401195 ★LOOP


00401195 > 83FB 00 CMP EBX,0 ★★★
00401198 . 74 20 JE SHORT CRKME10.004011BA
0040119A . 8BC3 MOV EAX,EBX EAX=000000E0
0040119C . 33D2 XOR EDX,EDX          EDX clear
0040119E . F7F1 DIV ECX            EAX=2 EDX=00000018
004011A0 . 8846 09 MOV BYTE PTR DS:[ESI+9],AL   ESIの示す4031EE+9のアドレスに02を格納
004011A3 . 83C0 30 ADD EAX,30   EAX=32(2)
004011A6 . 8806 MOV BYTE PTR DS:[ESI],AL    ESIの示すアドレスに32(2)を格納
004011A8 . 46 INC ESI            4031EE+1=4031EF
004011A9 . 52 PUSH EDX            
004011AA . 8BC1 MOV EAX,ECX EAX=00000064
004011AC . B9 0A000000 MOV ECX,0A ECX=0A
004011B1 . 33D2 XOR EDX,EDX EDX clear
004011B3 . F7F1 DIV ECX EAX=0000000A
004011B5 . 8BC8 MOV ECX,EAX ECX=0000000A
004011B7 . 5B POP EBX EBX=00000018
004011B8 .^EB DB JMP SHORT CRKME10.00401195 ★LOOP


00401195 > 83FB 00 CMP EBX,0 ★★★
00401198 . 74 20 JE SHORT CRKME10.004011BA
0040119A . 8BC3 MOV EAX,EBX EAX=00000018
0040119C . 33D2 XOR EDX,EDX          EDX clear
0040119E . F7F1 DIV ECX            EAX=2 EDX=00000004
004011A0 . 8846 09 MOV BYTE PTR DS:[ESI+9],AL   ESIの示す4031EF+9のアドレスに02を格納
004011A3 . 83C0 30 ADD EAX,30   EAX=32(2)
004011A6 . 8806 MOV BYTE PTR DS:[ESI],AL    ESIの示すアドレスに32(2)を格納
004011A8 . 46 INC ESI            4031EF+1=4031F0
004011A9 . 52 PUSH EDX            
004011AA . 8BC1 MOV EAX,ECX EAX=0000000A
004011AC . B9 0A000000 MOV ECX,0A ECX=0A
004011B1 . 33D2 XOR EDX,EDX EDX clear
004011B3 . F7F1 DIV ECX EAX=00000001
004011B5 . 8BC8 MOV ECX,EAX ECX=00000001
004011B7 . 5B POP EBX EBX=00000004
004011B8 .^EB DB JMP SHORT CRKME10.00401195 ★LOOP


00401195 > 83FB 00 CMP EBX,0 ★★★
00401198 . 74 20 JE SHORT CRKME10.004011BA
0040119A . 8BC3 MOV EAX,EBX EAX=00000004
0040119C . 33D2 XOR EDX,EDX          EDX clear
0040119E . F7F1 DIV ECX            EAX=4 EDX=00000000
004011A0 . 8846 09 MOV BYTE PTR DS:[ESI+9],AL   ESIの示す4031F0+9のアドレスに04を格納
004011A3 . 83C0 30 ADD EAX,30   EAX=34(4)
004011A6 . 8806 MOV BYTE PTR DS:[ESI],AL    ESIの示すアドレスに34(4)を格納
004011A8 . 46 INC ESI            4031F0+1=4031F1
004011A9 . 52 PUSH EDX            
004011AA . 8BC1 MOV EAX,ECX EAX=00000001
004011AC . B9 0A000000 MOV ECX,0A ECX=0A
004011B1 . 33D2 XOR EDX,EDX EDX clear
004011B3 . F7F1 DIV ECX EAX=00000000
004011B5 . 8BC8 MOV ECX,EAX ECX=00000000
004011B7 . 5B POP EBX EBX=00000000
004011B8 .^EB DB JMP SHORT CRKME10.00401195
004011BA > 68 E6314000 PUSH CRKME10.004031E6 ; /Text = "ID:00000000"
004011BF . FF35 08304000 PUSH DWORD PTR DS:[403008] ; |hWnd = 00000C60

('ID',class='Static',wndproc=80346BE8,parent=00000C54)
004011C5 . E8 60030000 CALL <JMP.&USER32.SetWindowTextA> ; \SetWindowTextA

順番 12345678
ID: 58746224