Jump to content
XPEnology Community

Alonia

Transition Member
  • Posts

    11
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Alonia

  1. В целях тестирования я уменьшил количество лицензий с 2 до 1. Теперь я могу проверить, проверяет ли контрольная сумма вообще библиотеки и проверяет ли она, должно ли количество лицензий быть ровно 2 или проверяет, меньше или равно ли оно 2.

    DSM7_1_cam.PNG

  2. 40 minutes ago, mihren said:

    @Alonia Попробуй изменить любой байт в libssutils.so не меняя количество лицензий. Я уверен что проверка контрольной суммы остановит станцию наблюдения.

    Я не могу понять, что проверяет контрольная сумма. Это похоже на контрольную сумму MD5. Я могу просто изменить его для проверки и посмотреть, что произойдет.

     

    @Vir-US тоже не стал их дожидаться. 

    Контрольная сумма MD5 обычно выдается только для одного файла или архива.
    Я могу посмотреть, используется ли вообще эта контрольная сумма.
    Может быть, он предназначен для чего-то другого

  3. 22 hours ago, T-REX-XP said:

    Hi, do you have any updates regarding your experiment ?) Does your modification stable ? Thanks in advance

    I am not that far yet.

    I just disabled several routines that stop the services to test.

    This does not solve the problem. In the end the system kills itself, because I destroyed the complete main routine.

    The following message is related to the KeepAlive function.

    Jan 27 22:35:44 [8568][8576][messaged][error] ssmessageutils.cpp:49:SendUpdateMsgToMsgD(): Failed to send cmd [7] to ssmessaged.

    This output is from libsshm.so File, I need to fix that.

  4. 15 minutes ago, montagnic said:

    Все прокатывает. Читайте тему. Выше  я писал про это. Проброса не будет. Работать ss будет только на виртуальной машине. 

    Exactly, or I'll manage to patch a new version with @Beman

     

    @montagnic Can you upload a log from version 8.2.7 (40 cameras) for me?

     

    Update:

    I managed to run SS for 3 hours with 3 cameras!

    I need to dig deeper inside the files😀

  5. As example:

    If I edit GetCamCnt() in the same way as from version 8.2.7-6222_(40_cams):

    /* ShmDBCache::GetCamCnt() */
    
    undefined8 ShmDBCache::GetCamCnt(void)
    
    {
      return 0;
    }

    Then in the sscamerad (8.2.10) this condition fails here

    lVar4 = SSShmDBCacheAt();
    if ((lVar4 != 0) && (iVar3 = ShmDBCache::GetCamCnt(), iVar3 < 1)) goto LAB_00421c80;
    iVar3 = UpdateSSCameradStatus(1,*(int *)(param_1 + 0x48));
    lVar4 = (long)iVar3;
    if (iVar3 == 0) {

    In 8.2.7 (40cams), GetCamCnt is not used in the same way. 

    Only one value was edited in the middle of the program:

     

    Original:

        cVar11 = '\x01';
        uVar28 = lVar26 - *(long *)(__mutex_00 + 1) >> 0x3f;
        if ((long)((lVar26 - *(long *)(__mutex_00 + 1) ^ uVar28) - uVar28) < 0x15181) {
          cVar11 = __mutex_00[1].field_0x8;

     

    Patched:

        cVar11 = '\x00';
        uVar28 = lVar26 - *(long *)(__mutex_00 + 1) >> 0x3f;
        if ((long)((lVar26 - *(long *)(__mutex_00 + 1) ^ uVar28) - uVar28) < 0x15181) {
          cVar11 = __mutex_00[1].field_0x8;

     

    @BemanCan you take a look at this too? I couldn't quite figure out what the modification does in 8.2.7.
    I have uploaded them all here: https://drive.google.com/drive/folders/1GE5DK60Zq9EswlYNrQ_E-8eGUaQivFHm?usp=sharing

    • Like 1
  6. 1 hour ago, mihren said:

    @Alonia There is also a library checksum check 'ss_lib_checksum'

    I think this is not relevant.

    I have uploaded my libssutils.so (patched_40_cams) here for SurveillanceStation-x86_64-8.2.10-7310
    The problem is that the value you modify there for the licences is checked. This means that conditions in the other libraries can no longer apply. This causes the services to terminate after a certain time.  

     

    libssutils.so

    • Like 2
  7. 3 hours ago, Beman said:

    @Alonia Nice work by the way! I have some experience with reverse engineering and could provide some help. Could you identify which website is SS trying to connect for the activation?

    The problem is that other Libarys check this information (offline).
    That is why @Vir-US has made some more modifications.

    When you change something inside the libssutils.so you brick other routines and then SS will stop the daemonmonitord


    What @Vir-US did:


    libssutils.so:

    change to bytes to set 2 standard licences to  40 standard licences


    libssshm.so:

    GetCamCnt() -> patched to( return 0; ) // hex -> B8 00 00 00 00 C3 90 90 … 90   (0x90 is a NOP and it do nothing. It is a space filler)
    GetIPSpeakerCnt() -> patched to( return 0; )

    GetIOModuleCnt() -> patched to( return 0; )

    GetSlaveDSCnt() -> patched to( return 0; )


    sscamerad:

    ssdaemonmonitord:

    ssmessaged:

    ssroutined:

    SYNO.SurveillanceStation.Layout.so:

    SYNO.SurveillanceStation.Player.so:

     

     

    When I edit the value you can see from the log what is changing.

    At beginning:

    Jan 27 22:35:44 [8568][8576][messaged][error] ssmessageutils.cpp:49:SendUpdateMsgToMsgD(): Failed to send cmd [7] to ssmessaged.


    One hour later:

    Jan 27 23:35:49 [8667][daemon][notice] daemonbase.cpp:364:MainLoop(): Stop ssdaemonmonitord.

    because the MainLoop() does not get the keep alive state 

     

    Start SS with patched libssutils.so and 3 cams:

    Jan 27 22:35:43 start-stop-status: start
    Jan 27 22:35:43 S82surveillance.sh: Start Surveillance [8.2.10-7310] begin.
    Jan 27 22:35:44 [8528][db][notice] ssdb.cpp:1782:Backup(): Backup db[system.db] successfully.
    Jan 27 22:35:44 [8528][rec-share][notice] recordingshareutils.cpp:789:UpdateSSServiceLink(): Set SS service link to [/volume1/surveillance].
    Jan 27 22:35:44 [8530][daemon][notice] daemonbase.cpp:264:Init(): Start ssapid
    Jan 27 22:35:44 [8532] sscored.cpp:297:main(): Start sscored.
    Jan 27 22:35:44 [8561][cms][notice] ssfindhostd.cpp:287:main(): Start ssfindhostd.
    Jan 27 22:35:44 [8528][8563][ss-service][notice] services.cpp:1031:StartSSCamerad(): Try to start cam[1].
    Jan 27 22:35:44 [8568][daemon][notice] daemonbase.cpp:264:Init(): Start ssrotated
    Jan 27 22:35:44 [8528][8564][ss-service][notice] services.cpp:1031:StartSSCamerad(): Try to start cam[2].
    Jan 27 22:35:44 [8528][8565][ss-service][notice] services.cpp:1031:StartSSCamerad(): Try to start cam[3].
    Jan 27 22:35:44 [8568][8571][ss-service][error] ssthreadtimer.cpp:83:SendKeepAlive(): Failed to send keep alive to daemon monitor. IsSSD[0], CamId[32629], Daemon[2]
    Jan 27 22:35:44 [8577][daemon][notice] daemonbase.cpp:264:Init(): Start ssnotifyd
    Jan 27 22:35:44 [8578][daemon][notice] daemonbase.cpp:264:Init(): Start sslogd
    Jan 27 22:35:44 [8579][daemon][notice] daemonbase.cpp:264:Init(): Start ssmobiled
    Jan 27 22:35:44 [8580][daemon][notice] daemonbase.cpp:264:Init(): Start ssfailoverd
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8556][rtsp][notice] ssrtspserverd.cpp:254:main(): Start ssrtspserverd.
    Jan 27 22:35:44 [8609][daemon][notice] daemonbase.cpp:264:Init(): Start sswebstreamd
    Jan 27 22:35:44 [8611][daemon][notice] daemonbase.cpp:264:Init(): Start sstimelapsed
    Jan 27 22:35:44 [8608][daemon][notice] daemonbase.cpp:264:Init(): Start ssarchivingd
    Jan 27 22:35:44 [8549][rtsp][notice] ssrtpdataproviderd.cpp:1766:main(): Start ssrtpdataproviderd.
    Jan 27 22:35:44 [8612][daemon][notice] daemonbase.cpp:264:Init(): Start ssroutined
    Jan 27 22:35:44 [8655][daemon][notice] daemonbase.cpp:264:Init(): Start sscamerad2
    Jan 27 22:35:44 [8653][daemon][notice] daemonbase.cpp:264:Init(): Start sscamerad1
    Jan 27 22:35:44 [8656][daemon][notice] daemonbase.cpp:264:Init(): Start ssactruled
    Jan 27 22:35:44 [8568][8576][messaged][error] ssmessageutils.cpp:49:SendUpdateMsgToMsgD(): Failed to send cmd [7] to ssmessaged.
    Jan 27 22:35:44 [8660][daemon][notice] daemonbase.cpp:264:Init(): Start sscamerad3
    Jan 27 22:35:44 [8662][daemon][notice] daemonbase.cpp:264:Init(): Start ssmessaged
    Jan 27 22:35:44 [8662][messaged][notice] ssmessaged.cpp:1130:Init(): Start websocket server.
    Jan 27 22:35:44 [8667][daemon][notice] daemonbase.cpp:264:Init(): Start ssdaemonmonitord
    Jan 27 22:35:44 S82surveillance.sh: Start Surveillance [8.2.10-7310] end.


    Start SS without any mod and one cam:

    Jan 27 23:47:49 start-stop-status: start
    Jan 27 23:47:50 S82surveillance.sh: Start Surveillance [8.2.10-7310] begin.
    Jan 27 23:47:50 [31994][db][notice] ssdb.cpp:1782:Backup(): Backup db[system.db] successfully.
    Jan 27 23:47:50 [31994][rec-share][notice] recordingshareutils.cpp:789:UpdateSSServiceLink(): Set SS service link to [/volume1/surveillance].
    Jan 27 23:47:51 [31998][daemon][notice] daemonbase.cpp:264:Init(): Start ssapid
    Jan 27 23:47:51 [32000] sscored.cpp:297:main(): Start sscored.
    Jan 27 23:47:51 [32029][daemon][notice] daemonbase.cpp:264:Init(): Start ssarchivingd
    Jan 27 23:47:51 [32039][daemon][notice] daemonbase.cpp:264:Init(): Start ssnotifyd
    Jan 27 23:47:51 [32040][daemon][notice] daemonbase.cpp:264:Init(): Start sstimelapsed
    Jan 27 23:47:51 [32048][cms][notice] ssfindhostd.cpp:287:main(): Start ssfindhostd.
    Jan 27 23:47:51 [32055][daemon][notice] daemonbase.cpp:264:Init(): Start ssactruled
    Jan 27 23:47:52 [32072][daemon][notice] daemonbase.cpp:264:Init(): Start ssfailoverd
    Jan 27 23:47:52 [32072][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 23:47:52 [32072][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 23:47:52 [32072][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 23:47:52 [32072][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 23:47:52 [32072][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 23:47:52 [32072][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 23:47:52 [32073][daemon][notice] daemonbase.cpp:264:Init(): Start ssmobiled
    Jan 27 23:47:52 [32070][bkg-upgrader][notice] ssbkgupgraderd.cpp:207:main(): Start ssbkgupgraderd.
    Jan 27 23:47:52 [32020][rtsp][notice] ssrtpdataproviderd.cpp:1766:main(): Start ssrtpdataproviderd.
    Jan 27 23:47:52 [32021][rtsp][notice] ssrtspserverd.cpp:254:main(): Start ssrtspserverd.
    Jan 27 23:47:52 [32091][daemon][notice] daemonbase.cpp:264:Init(): Start ssrotated
    Jan 27 23:47:52 [32091][32093][ss-service][error] ssthreadtimer.cpp:83:SendKeepAlive(): Failed to send keep alive to daemon monitor. IsSSD[0], CamId[32739], Daemon[2]
    Jan 27 23:47:52 [32098][daemon][notice] daemonbase.cpp:264:Init(): Start sswebstreamd
    Jan 27 23:47:52 [32097][daemon][notice] daemonbase.cpp:264:Init(): Start sslogd
    Jan 27 23:47:52 [32100][daemon][notice] daemonbase.cpp:264:Init(): Start ssroutined
    Jan 27 23:47:52 [32120][daemon][notice] daemonbase.cpp:264:Init(): Start ssmessaged
    Jan 27 23:47:52 [32120][messaged][notice] ssmessaged.cpp:1130:Init(): Start websocket server.
    Jan 27 23:47:52 [32125][daemon][notice] daemonbase.cpp:264:Init(): Start ssdaemonmonitord
    Jan 27 23:47:52 S82surveillance.sh: Start Surveillance [8.2.10-7310] end.

     

  8. 3 hours ago, Beman said:

    @Alonia, did you try this on the very new version? 9.0 (It is still beta)

    I working on version 8.2.10-7310. 

    All cameras run for 1 hour. Then a routine starts which probably checks the state and deactivates the cameras.

    So far I have also only edited the libssutils.so

    @Vir-US had edited some more files. The only problem is that what he has edited can not be found again.
    I will soon upload the file with the log files  

    DSM7.PNG

     

    Update:

    Log output

    Jan 27 22:35:43 start-stop-status: start
    Jan 27 22:35:43 S82surveillance.sh: Start Surveillance [8.2.10-7310] begin.
    Jan 27 22:35:44 [8528][db][notice] ssdb.cpp:1782:Backup(): Backup db[system.db] successfully.
    Jan 27 22:35:44 [8528][rec-share][notice] recordingshareutils.cpp:789:UpdateSSServiceLink(): Set SS service link to [/volume1/surveillance].
    Jan 27 22:35:44 [8530][daemon][notice] daemonbase.cpp:264:Init(): Start ssapid
    Jan 27 22:35:44 [8532] sscored.cpp:297:main(): Start sscored.
    Jan 27 22:35:44 [8561][cms][notice] ssfindhostd.cpp:287:main(): Start ssfindhostd.
    Jan 27 22:35:44 [8528][8563][ss-service][notice] services.cpp:1031:StartSSCamerad(): Try to start cam[1].
    Jan 27 22:35:44 [8568][daemon][notice] daemonbase.cpp:264:Init(): Start ssrotated
    Jan 27 22:35:44 [8528][8564][ss-service][notice] services.cpp:1031:StartSSCamerad(): Try to start cam[2].
    Jan 27 22:35:44 [8528][8565][ss-service][notice] services.cpp:1031:StartSSCamerad(): Try to start cam[3].
    Jan 27 22:35:44 [8568][8571][ss-service][error] ssthreadtimer.cpp:83:SendKeepAlive(): Failed to send keep alive to daemon monitor. IsSSD[0], CamId[32629], Daemon[2]
    Jan 27 22:35:44 [8577][daemon][notice] daemonbase.cpp:264:Init(): Start ssnotifyd
    Jan 27 22:35:44 [8578][daemon][notice] daemonbase.cpp:264:Init(): Start sslogd
    Jan 27 22:35:44 [8579][daemon][notice] daemonbase.cpp:264:Init(): Start ssmobiled
    Jan 27 22:35:44 [8580][daemon][notice] daemonbase.cpp:264:Init(): Start ssfailoverd
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8580][utils][alarm] ssworkermgr.cpp:40:CreateWorkers(): Cancel terminated thread id will cause undefined behavior(segfault..). Detach thread will terminate itself.
    Jan 27 22:35:44 [8556][rtsp][notice] ssrtspserverd.cpp:254:main(): Start ssrtspserverd.
    Jan 27 22:35:44 [8609][daemon][notice] daemonbase.cpp:264:Init(): Start sswebstreamd
    Jan 27 22:35:44 [8611][daemon][notice] daemonbase.cpp:264:Init(): Start sstimelapsed
    Jan 27 22:35:44 [8608][daemon][notice] daemonbase.cpp:264:Init(): Start ssarchivingd
    Jan 27 22:35:44 [8549][rtsp][notice] ssrtpdataproviderd.cpp:1766:main(): Start ssrtpdataproviderd.
    Jan 27 22:35:44 [8612][daemon][notice] daemonbase.cpp:264:Init(): Start ssroutined
    Jan 27 22:35:44 [8655][daemon][notice] daemonbase.cpp:264:Init(): Start sscamerad2
    Jan 27 22:35:44 [8653][daemon][notice] daemonbase.cpp:264:Init(): Start sscamerad1
    Jan 27 22:35:44 [8656][daemon][notice] daemonbase.cpp:264:Init(): Start ssactruled
    Jan 27 22:35:44 [8568][8576][messaged][error] ssmessageutils.cpp:49:SendUpdateMsgToMsgD(): Failed to send cmd [7] to ssmessaged.
    Jan 27 22:35:44 [8660][daemon][notice] daemonbase.cpp:264:Init(): Start sscamerad3
    Jan 27 22:35:44 [8662][daemon][notice] daemonbase.cpp:264:Init(): Start ssmessaged
    Jan 27 22:35:44 [8662][messaged][notice] ssmessaged.cpp:1130:Init(): Start websocket server.
    Jan 27 22:35:44 [8667][daemon][notice] daemonbase.cpp:264:Init(): Start ssdaemonmonitord
    Jan 27 22:35:44 S82surveillance.sh: Start Surveillance [8.2.10-7310] end.
    Jan 27 22:35:45 [8654][bkg-upgrader][notice] ssbkgupgraderd.cpp:207:main(): Start ssbkgupgraderd.
    Jan 27 22:35:45 [8568][8576][rotated][notice] ssrotated.cpp:764:RotateRecLogFile(): Rotate rec-log file.
    Jan 27 22:35:46 [8577][8595] sspushserviceutils.cpp:815:FetchMobileDeviceList(): Failed to get mobile list from sns servers.
    Jan 27 22:35:46 [8577][8595][notify-push][error] sspushserviceutils.cpp:1009:GetPushV1MobileConnected(): Fail fetch device list of push service
    Jan 27 22:35:47 [8655][cam][notice] camerainstance.cpp:3695:Setup(): Cam[2]: Failed to update media path.
    Jan 27 22:35:47 [8660][cam][notice] camerainstance.cpp:3695:Setup(): Cam[3]: Failed to update media path.
    Jan 27 22:35:49 [8653][cam][notice] camerainstance.cpp:3695:Setup(): Cam[1]: Failed to update media path.
    Jan 27 23:35:49 [8667][daemon][notice] daemonbase.cpp:364:MainLoop(): Stop ssdaemonmonitord.
    Jan 27 23:35:49 [8660][cam][notice] sscamerad.cpp:236:Finalize(): Start finalize of cam [3]
    Jan 27 23:35:49 [8655][cam][notice] sscamerad.cpp:236:Finalize(): Start finalize of cam [2]
    Jan 27 23:35:49 [8653][cam][notice] sscamerad.cpp:236:Finalize(): Start finalize of cam [1]
    Jan 27 23:35:49 [8655][cam][notice] sscamerad.cpp:253:Finalize(): Finalize complete of cam [2]
    Jan 27 23:35:49 [8655][daemon][notice] daemonbase.cpp:364:MainLoop(): Stop sscamerad2.
    Jan 27 23:35:49 [8660][cam][notice] sscamerad.cpp:253:Finalize(): Finalize complete of cam [3]
    Jan 27 23:35:49 [8660][daemon][notice] daemonbase.cpp:364:MainLoop(): Stop sscamerad3.
    Jan 27 23:35:50 [8653][cam][notice] sscamerad.cpp:253:Finalize(): Finalize complete of cam [1]
    Jan 27 23:35:50 [8653][daemon][notice] daemonbase.cpp:364:MainLoop(): Stop sscamerad1.
    Jan 27 23:36:44 [8568][8571][ss-service][error] ssthreadtimer.cpp:83:SendKeepAlive(): Failed to send keep alive to daemon monitor. IsSSD[0], CamId[32629], Daemon[2]
    Jan 27 23:37:44 [8568][8571][ss-service][error] ssthreadtimer.cpp:83:SendKeepAlive(): Failed to send keep alive to daemon monitor. IsSSD[0], CamId[32629], Daemon[2]
    Jan 27 23:38:44 [8568][8571][ss-service][error] ssthreadtimer.cpp:83:SendKeepAlive(): Failed to send keep alive to daemon monitor. IsSSD[0], CamId[32629], Daemon[2]

     

  9. Hello Members ;)

    I am currently working on a patch for the latest SS version for DSM7. Unfortunately there have been some changes to the files. In addition, the applications can no longer be unpacked as .tar.
    Currently I have 40 licenses deposited as before. Now I still have to adjust the other routines that it does not check the number of licenses (time bomb).

    Are there still active users here who want to take care of this with me?
     

    EBEC1C2D-5125-4519-8ED8-8A82A4CBC6A8.jpeg

    • Like 1
    • Thanks 1
×
×
  • Create New...