Hola, jdws88
Esto es un pequeño ejemplo de como funcionan las dongles, es solo con fines educativos: Descargamos el programa CodeMeter Runtime-Kit 3.30b for Windows 32 Bit (20,8 MB) de
http://codemeter.de/us/service/downloads.html.Este programa una vez instalado lo primero que realiza es la comprobación de SI tenemos conecatada la DONGLE.
Código ASM: --- CodeMeterCC.exe ---
Rutina de Comprobación de Si EXISTE o NO una Dongle CmStick
00411880 /$ 6A FF PUSH -1
00411882 |. 68 387C7800 PUSH 00787C38
00411887 |. 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
0041188D |. 50 PUSH EAX
0041188E |. 83EC 44 SUB ESP,44
00411891 |. 53 PUSH EBX
00411892 |. 55 PUSH EBP
00411893 |. 56 PUSH ESI
00411894 |. 57 PUSH EDI
00411895 |. A1 04D99000 MOV EAX,DWORD PTR DS:[90D904]
0041189A |. 33C4 XOR EAX,ESP
0041189C |. 50 PUSH EAX
0041189D |. 8D4424 58 LEA EAX,DWORD PTR SS:[ESP+58]
004118A1 |. 64:A3 00000000 MOV DWORD PTR FS:[0],EAX
004118A7 |. 8BF1 MOV ESI,ECX
004118A9 |. 8B6C24 68 MOV EBP,DWORD PTR SS:[ESP+68]
004118AD |. 81E5 00F00000 AND EBP,0F000
004118B3 |. 81FD 00500000 CMP EBP,5000
004118B9 |. 0F8F 0C020000 JG 00411ACB
004118BF |. 0F84 61010000 JE 00411A26
004118C5 |. 81FD 00300000 CMP EBP,3000
004118CB 0F84 B0000000 JE 00411981 <- Aquí si cambiamos el salto por 0F85 (JNE) "1 CmStick connected"
004118D1 |. 81FD 00400000 CMP EBP,4000
004118D7 |. 0F85 FA010000 JNZ 00411AD7
004118DD |. 83CF FF OR EDI,FFFFFFFF
004118E0 |. 57 PUSH EDI
004118E1 |. 68 F4AA7C00 PUSH 007CAAF4 ; ASCII ":/pixmaps/CodeMeterIconYellow32.png"
004118E6 |. E8 D5080200 CALL 004321C0
004118EB |. 83C4 08 ADD ESP,8
004118EE |. 894424 14 MOV DWORD PTR SS:[ESP+14],EAX
004118F2 |. 8D4424 14 LEA EAX,DWORD PTR SS:[ESP+14]
004118F6 |. BB 03000000 MOV EBX,3
004118FB |. 50 PUSH EAX ; /Arg1
004118FC |. 8D4C24 48 LEA ECX,DWORD PTR SS:[ESP+48] ; |
00411900 |. 895C24 64 MOV DWORD PTR SS:[ESP+64],EBX ; |
00411904 |. E8 377F0D00 CALL 004E9840 ; \CodeMete.004E9840
00411909 |. 8B4E 7C MOV ECX,DWORD PTR DS:[ESI+7C]
0041190C |. 50 PUSH EAX
0041190D |. C64424 64 04 MOV BYTE PTR SS:[ESP+64],4
00411912 |. E8 F9860E00 CALL 004FA010
00411917 |. 8D4C24 44 LEA ECX,DWORD PTR SS:[ESP+44]
0041191B |. 885C24 60 MOV BYTE PTR SS:[ESP+60],BL
0041191F |. E8 5C6C0D00 CALL 004E8580
00411924 |. 8B4C24 14 MOV ECX,DWORD PTR SS:[ESP+14]
00411928 |. 897C24 60 MOV DWORD PTR SS:[ESP+60],EDI
0041192C |. 8BD7 MOV EDX,EDI
0041192E |. F0:0FC111 LOCK XADD DWORD PTR DS:[ECX],EDX
00411932 |. 75 0D JNZ SHORT 00411941
00411934 |. 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14]
00411938 |. 50 PUSH EAX
00411939 |. E8 92EA0100 CALL 004303D0
0041193E |. 83C4 04 ADD ESP,4
00411941 |> 6A 00 PUSH 0
00411943 |. 8D4C24 2C LEA ECX,DWORD PTR SS:[ESP+2C]
00411947 |. 68 D0AA7C00 PUSH 007CAAD0 ; ASCII "1 CmStick (temp. enabled) connected"
0041194C |. 51 PUSH ECX
0041194D |. E8 7E94FFFF CALL 0040ADD0
00411952 |. 83C4 0C ADD ESP,0C
00411955 |. 8B4E 7C MOV ECX,DWORD PTR DS:[ESI+7C]
00411958 |. 50 PUSH EAX
00411959 |. C74424 64 05000000 MOV DWORD PTR SS:[ESP+64],5
00411961 |. E8 FA860E00 CALL 004FA060
00411966 |. 8B5424 28 MOV EDX,DWORD PTR SS:[ESP+28]
0041196A |. 897C24 60 MOV DWORD PTR SS:[ESP+60],EDI
0041196E |. F0:0FC13A LOCK XADD DWORD PTR DS:[EDX],EDI
00411972 |. 0F85 4C030000 JNZ 00411CC4
00411978 |. 8B4424 28 MOV EAX,DWORD PTR SS:[ESP+28]
0041197C |. E9 3A030000 JMP 00411CBB
00411981 |> 83CF FF OR EDI,FFFFFFFF
00411984 |. 57 PUSH EDI
00411985 |. 68 38A87C00 PUSH 007CA838 ; ASCII ":/pixmaps/CodeMeterIconGreen32.png"
0041198A |. E8 31080200 CALL 004321C0
0041198F |. 83C4 08 ADD ESP,8
00411992 |. 894424 18 MOV DWORD PTR SS:[ESP+18],EAX
00411996 |. 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18]
0041199A |. 51 PUSH ECX ; /Arg1
0041199B |. 8D4C24 4C LEA ECX,DWORD PTR SS:[ESP+4C] ; |
0041199F |. C74424 64 00000000 MOV DWORD PTR SS:[ESP+64],0 ; |
004119A7 |. E8 947E0D00 CALL 004E9840 ; \CodeMete.004E9840
004119AC |. 8B4E 7C MOV ECX,DWORD PTR DS:[ESI+7C]
004119AF |. 50 PUSH EAX
004119B0 |. C64424 64 01 MOV BYTE PTR SS:[ESP+64],1
004119B5 |. E8 56860E00 CALL 004FA010
004119BA |. 8D4C24 48 LEA ECX,DWORD PTR SS:[ESP+48]
004119BE |. C64424 60 00 MOV BYTE PTR SS:[ESP+60],0
004119C3 |. E8 B86B0D00 CALL 004E8580
004119C8 |. 8B5424 18 MOV EDX,DWORD PTR SS:[ESP+18]
004119CC |. 897C24 60 MOV DWORD PTR SS:[ESP+60],EDI
004119D0 |. 8BC7 MOV EAX,EDI
004119D2 |. F0:0FC102 LOCK XADD DWORD PTR DS:[EDX],EAX
004119D6 |. 75 0D JNZ SHORT 004119E5
004119D8 |. 8B4C24 18 MOV ECX,DWORD PTR SS:[ESP+18]
004119DC |. 51 PUSH ECX
004119DD |. E8 EEE90100 CALL 004303D0
004119E2 |. 83C4 04 ADD ESP,4
004119E5 |> 6A 00 PUSH 0
004119E7 |. 8D5424 30 LEA EDX,DWORD PTR SS:[ESP+30]
004119EB |. 68 BCAA7C00 PUSH 007CAABC ; ASCII "1 CmStick connected"
Esto es uno de los primeros pasos que deberemo realizar para la emulación de cualquier DONGLE, emular la existencia de la DONGLE. Seguiriamos con la emulación de los distintos servicios y Passwords dependiendo de los modelos de Dongle.
Un saludo,