Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2021-09-26, 18:55
  #1
Medlem
Hej
Jag försöker ta bort en tidsbegränsning i en mjukvara mha IDA.
30 minuter efter jag startat programmet visas en dialogruta som säger "Demo will be terminated, 1/2 hour demo period is over..."
Jag har sökt efter delar av denna text i strings men hittar inget. vad finns det för alternativ att hitta funktionen som avslutar programmet?
Har försökt att gå igenom funktionerna men programmet innehåller ca 3000 funktioner vilka de flesta heter sub_4017D0 eller liknande

/K
Citera
2021-09-26, 19:55
  #2
Medlem
Trollfeeders avatar
Citat:
Ursprungligen postat av kanalapa
Hej
Jag försöker ta bort en tidsbegränsning i en mjukvara mha IDA.
30 minuter efter jag startat programmet visas en dialogruta som säger "Demo will be terminated, 1/2 hour demo period is over..."
Jag har sökt efter delar av denna text i strings men hittar inget. vad finns det för alternativ att hitta funktionen som avslutar programmet?
Har försökt att gå igenom funktionerna men programmet innehåller ca 3000 funktioner vilka de flesta heter sub_4017D0 eller liknande

/K

Vad menar du med "sökt i strings"? Och hur har du sökt? Vad var dit scope när du sökte?
Citera
2021-09-26, 20:21
  #3
Medlem
Jag söker efter texten "demo period" i subview strings. Vad menar du med scope?
Citera
2021-09-26, 23:37
  #4
Medlem
Telepatisks avatar
Citat:
Ursprungligen postat av kanalapa
Hej
Jag försöker ta bort en tidsbegränsning i en mjukvara mha IDA.
30 minuter efter jag startat programmet visas en dialogruta som säger "Demo will be terminated, 1/2 hour demo period is over..."
Jag har sökt efter delar av denna text i strings men hittar inget. vad finns det för alternativ att hitta funktionen som avslutar programmet?
Har försökt att gå igenom funktionerna men programmet innehåller ca 3000 funktioner vilka de flesta heter sub_4017D0 eller liknande

/K
Det var längesen jag använde IDA, men jag minns det som krångligt. Ghidra och x64dbg är lättare enligt mig. Med Ghidra så kan du visualisera funktioner i C istället för i assembly, men det kanske IDA också kan göra? Alternativt så kan du dra ner Cheat Engine och söka där i också.

Debuggern har inte tillräckligt med information för att veta vad funktionerna hette innan programmet kompilerades, det är därför du får upp sådana namn, sub_4017D0, eller snarare subroutine-adress.

Är det något känt/stort program så har dom säkert massa saker inlagt för att du inte enkelt ska kunna cracka bort den där rutan. Lust att skicka i PM annars vilket program och version som det gäller?
Citera
2021-09-27, 13:03
  #5
Moderator
Pontiac-Garages avatar
Citat:
Ursprungligen postat av kanalapa
Hej
Jag försöker ta bort en tidsbegränsning i en mjukvara mha IDA.
30 minuter efter jag startat programmet visas en dialogruta som säger "Demo will be terminated, 1/2 hour demo period is over..."
Jag har sökt efter delar av denna text i strings men hittar inget. vad finns det för alternativ att hitta funktionen som avslutar programmet?
Har försökt att gå igenom funktionerna men programmet innehåller ca 3000 funktioner vilka de flesta heter sub_4017D0 eller liknande

/K

Det blir svårt att vägleda med så lite info om programstrukturen. Men det enklaste torde vara att gå igenom koden i en lämplig utvecklingsmiljö, i syfte att studera vilken funktion/subrutin som orsakar begränsningen. Gissar att du har tillgång till all källkod för programmet och nästa steg skulle väl i så fall vara att få tag på lite dokumentation.

Rimligen är det inte tänkt att folk ska mixtra med ett program hur de vill så en gissning är att funktionen är något "dold" och att man därför behöver studera programmet ingående.
Citera
2021-09-27, 20:42
  #6
Medlem
Hej

Tack för era svar.
Jag är för grön för att få tillåtelse att PM:a
Programmet är en PLC emulator. x64dbg verkar vara en mer populär debugger, ska prova den också.
Det som förbryllar mig är hur man kan gömma texten i messageboxen i programkoden. Man borde kunna hitta den då all kod finns i debuggern

/K
Citera
2021-09-27, 21:39
  #7
Medlem
PC-Dators avatar
Citat:
Ursprungligen postat av kanalapa
Hej

Tack för era svar.
Jag är för grön för att få tillåtelse att PM:a
Programmet är en PLC emulator. x64dbg verkar vara en mer populär debugger, ska prova den också.
Det som förbryllar mig är hur man kan gömma texten i messageboxen i programkoden. Man borde kunna hitta den då all kod finns i debuggern

/K

Hittar du inte textsträngen via x64dbg så kan den vara krypterad i SoftPLC, just för att undvika att hittas av en debugger.

Kan tillägga att det inte verkar finnas en knäckt version av programmet. Kanske finns det en anledning till det, dvs svårknäckt. Spekulerar bara..
Citera
2021-09-27, 23:00
  #8
Medlem
Telepatisks avatar
Hittade inte textsträngen heller. Massa olika filer/program och grejer också, men ska testa lite så fort jag nått 30-minutersspärren

Klassiker är annars att avinstallera och ta bort programmappen och sen installera igen och se om du får en ny period. Om inte så kan man testa att öppna regedit och ta bort allting som har med programmets namn att göra innan man installerar det igen. Men vore jobbigt att göra detta varje halvtimme förvisso..
Citera
2021-09-28, 00:25
  #9
Medlem
Citat:
Ursprungligen postat av Telepatisk
Hittade inte textsträngen heller. Massa olika filer/program och grejer också, men ska testa lite så fort jag nått 30-minutersspärren

Klassiker är annars att avinstallera och ta bort programmappen och sen installera igen och se om du får en ny period. Om inte så kan man testa att öppna regedit och ta bort allting som har med programmets namn att göra innan man installerar det igen. Men vore jobbigt att göra detta varje halvtimme förvisso..


Om man har en extra hårddisk så kan man klona den innan man installerar programmet.
Därpå installerar man programmet, kör det tills man blir nöjd.
Sedan klonar man från originalet igen.
Och installerar igen, då kan man köra ett tag till.
Med ett flertal sådana här kloner av systemdisken så kan man använda det ganska mycket.

Kan du ställa tillbaks systemklockan tex ?
Programmet kan ju vara så korkat att det missar det.Det kan också bli lurat av att ändra tidszon, många program skiter i att kontrollera tidszonen.
Ställ tillbaks tex tre timmar och se om du kan köra 3:30 tim ?

Annars om du har Linux som host och två Windows-installationer som guests borde du kunna växla mellan dessa och använda programmet betydligt längre tid.
Man kan även hos hosten ställa in guestens tid artificiellt.
Kanske det innebär att du måste fimpa dess Internet-uppkppling så att den inte kan kolla UTC-tiden ?

Det beror ju lite grand vad man vill göra med programmet också om man kan komma på något sätt att avsluta det du höll på med inom 30 minuter, typ.
Citera
2021-09-28, 00:59
  #10
Medlem
Telepatisks avatar
Citat:
Ursprungligen postat av DrSvenne
Om man har en extra hårddisk så kan man klona den innan man installerar programmet.
Därpå installerar man programmet, kör det tills man blir nöjd.
Sedan klonar man från originalet igen.
Och installerar igen, då kan man köra ett tag till.
Med ett flertal sådana här kloner av systemdisken så kan man använda det ganska mycket.

Kan du ställa tillbaks systemklockan tex ?
Programmet kan ju vara så korkat att det missar det.Det kan också bli lurat av att ändra tidszon, många program skiter i att kontrollera tidszonen.
Ställ tillbaks tex tre timmar och se om du kan köra 3:30 tim ?

Annars om du har Linux som host och två Windows-installationer som guests borde du kunna växla mellan dessa och använda programmet betydligt längre tid.
Man kan även hos hosten ställa in guestens tid artificiellt.
Kanske det innebär att du måste fimpa dess Internet-uppkppling så att den inte kan kolla UTC-tiden ?

Det beror ju lite grand vad man vill göra med programmet också om man kan komma på något sätt att avsluta det du höll på med inom 30 minuter, typ.
Många bra idéer, tack!

Testade faktiskt att ställa fram systemklockan innan för att se om jag kunde få fram boxen snabbare men det fungerade inte. Testade aldrig att ställa bak klockan medan programmet kördes dock. Ganska jobbigt att behöva vänta i 30 min..

Jag trodde ju först att man bara kunde ha igång det i 30 min och sen kunde man inte starta det mer, men man kan starta om det och så får man 30 nya minuter.

Har dock redan "ändrat" i programmet nu till att vara 10 timmar istället för 30 min. Får se om det kommer upp en ruta ca 1-2 h efter att jag vaknat sen
Citera
2021-09-28, 19:19
  #11
Medlem
Citat:
Ursprungligen postat av PC-Dator
Hittar du inte textsträngen via x64dbg så kan den vara krypterad i SoftPLC, just för att undvika att hittas av en debugger.

Kan tillägga att det inte verkar finnas en knäckt version av programmet. Kanske finns det en anledning till det, dvs svårknäckt. Spekulerar bara..
Det är ingen kryptering. TS söker i fel fil eller har missat att det är en unicode-sträng.

Kod:
        00407b30 ff d5             CALL    EBP=>KERNEL32.DLL::GetTickCount
        00407b32 2b c3             SUB     EAX,EBX
        00407b34 3d 40 77 1b 00    CMP     EAX,0x1b7740 <-- 1800000ms = 30min
        00407b39 73 0f             JNC     00407b4a   <-- ta bort
        00407b3b 6a 64             PUSH    0x64
        00407b3d ff d7             CALL    EDI=>KERNEL32.DLL::Sleep
        00407b3f 83 c6 64          ADD     ESI,0x64
        00407b42 81 fe 40 77 1b 00 CMP     ESI,0x1b7740
        00407b48 7c e6             JL      00407b30 <-- ändra JL till JMP

plc416dm.exe+6f39   73 0f -> 90 90
plc416dm.exe+6f48   7c -> eb
Citera
2021-09-28, 20:05
  #12
Medlem
Telepatisks avatar
Citat:
Ursprungligen postat av mongomannen
Det är ingen kryptering. TS söker i fel fil eller har missat att det är en unicode-sträng.

Kod:
        00407b30 ff d5             CALL    EBP=>KERNEL32.DLL::GetTickCount
        00407b32 2b c3             SUB     EAX,EBX
        00407b34 3d 40 77 1b 00    CMP     EAX,0x1b7740 <-- 1800000ms = 30min
        00407b39 73 0f             JNC     00407b4a   <-- ta bort
        00407b3b 6a 64             PUSH    0x64
        00407b3d ff d7             CALL    EDI=>KERNEL32.DLL::Sleep
        00407b3f 83 c6 64          ADD     ESI,0x64
        00407b42 81 fe 40 77 1b 00 CMP     ESI,0x1b7740
        00407b48 7c e6             JL      00407b30 <-- ändra JL till JMP

plc416dm.exe+6f39   73 0f -> 90 90
plc416dm.exe+6f48   7c -> eb
Jag ändrade 0x1b7740 på båda ställena till att bli 36000000 ms == 10 h istället för ville inte cracka det helt och hållet för tänkte att det känns omoraliskt Har förvisso inte delat programmet med TS.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback