Новости:

Форум Infotex WeaponMod

Последние сообщения

Страницы: 1 ... 5 6 [7] 8 9 10
61
Трансиверы, приемники КВ/УКВ / Re: Baofeng DM-32
« Последний ответ от Vakhtang 13 Октября 2025, 17:55:18 »
Доброго времени суток.
Мой DM32UV не держит канал, выхожу на связь на 2501 и через несколько секунд скидывает на другой. приходится постоянно лезть в контакты и выставлять группу. В чем может быть причина?
Сейчас у меня прошивка 0.49 и CPS1.50. но и доо обновления было так (0.46)
62
Трансиверы, приемники КВ/УКВ / Re: Baofeng DM-32
« Последний ответ от Koshak 12 Октября 2025, 09:11:30 »
но я никуда не продвинулся, потому что ничего толком не сработало.
Я пока нашёл функцию чтения из флешь и подготовку для сравнения данных кода ALPU. Пока не понятно где вызывается эта проверка... Что-бы исключить её  :-)
Да и кстати я попробовал IDA7.7, процессорный модуль от  andynvkz работает. Приаттачу ниже.
63
Трансиверы, приемники КВ/УКВ / Re: Baofeng DM-32
« Последний ответ от GTMoraes 11 Октября 2025, 17:57:37 »
Когда я закидывал код в ChatGPT, он якобы что-то там определил и пытался сделать что-то, чтобы я мог это проверить. Точнее, я ожидал, что если я отключу проверки DMR CRC, то смогу принимать передачи Motorola DMR RAS, а значит и передачи скорой помощи. ChatGPT проанализировал декомпилированный код и предложил изменения в .bin-файле через HEX-редактор, но я никуда не продвинулся, потому что ничего толком не сработало.

Проблема была в том, что я не знал, делаю ли я что-то осмысленное или просто меняю случайные hex-значения, поэтому я попросил ChatGPT определить, где находятся пределы частот TX и RX, и он правильно их определил.

Но, возможно, это было «просто». Я подумывал о том, чтобы моддить что-то на более низком уровне или что-то, что находится прямо в коде и что я мог бы быстро проверить. У меня в последнее время не было времени, но одна из вещей, которую я думал изменить, — это «Роджер-бип» от Baofeng. Я думал изменить его тон или что-то в этом роде, чтобы посмотреть, действительно ли декомпилированный код указывает на правильные места, поэтому я и предлагаю сперва сделать так, прежде чем считать что-либо от ИИ или из декомпиляции реальным.
64
Трансиверы, приемники КВ/УКВ / Re: Baofeng DM-32
« Последний ответ от mvisions 11 Октября 2025, 12:02:36 »
Отчёт об Анализе Функций Прошивки
Informe de análisis de funciones de firmware
Анализируемый код, состоящий из низкоуровневой функции ввода-вывода (FUN_300dc690) и высокоуровневой функции чтения с повторами (UndefinedFunction_300dc8d0), представляет собой типичный и надёжно спроектированный фрагмент прошивки (firmware) или драйвера устройства для встроенных систем, работающих с энергонезависимой памятью (например, Flash или EEPROM).
El código analizado, que consta de una función de E/S de bajo nivel (FUN_300dc690) y una función de lectura y reproducción (UndefinedFunction_300dc8d0) de alto nivel, es una pieza típica y bien diseñada de firmware o controlador de dispositivo para sistemas integrados que funcionan con memoria no volátil (por ejemplo, Flash o EEPROM).

1. FUN_300dc690: Драйвер Чтения (Низкий Уровень)
1. FUN_300dc690: Leer controlador (bajo)
Эта функция является основным механизмом для доступа к оборудованию. Её сложность обусловлена необходимостью строгого соблюдения ограничений и протоколов устройства.
Esta característica es el mecanismo principal para acceder al hardware. Su complejidad se debe a la necesidad de cumplir estrictamente con las restricciones y protocolos del dispositivo.

Аспект  Aspecto   Детали Анализа  Detalles del análisis   Значимость в Embedded Systems
Importancia en los sistemas integrados
Цель  Propósito   Безопасное чтение блока данных с указанного смещения (param_1) в буфер (param_3).
Lee de forma segura un bloque de datos de un desplazamiento especificado (param_1) a un búfer (param_3).   Ядро I/O Драйвера. Непосредственно взаимодействует с контроллером памяти.
Núcleo de E/S del controlador. Se comunica directamente con el controlador de memoria.
Проверки  Comprobar   Жёсткая валидация входных данных: состояние системы, NULL-указатели, границы смещения и размер чтения.
Validación dura de los datos de entrada: estado del sistema, punteros nulos, límites de desplazamiento y tamaño de lectura.   Защита от сбоев (crash) и недопустимого доступа к памяти, что критично для прошивки.
Protección contra bloqueos y acceso a memoria no válido, que es fundamental para el firmware.
Логика Разбиения (Chunking)
Lógica de partición (fragmentación)   Чтение выполняется частями (uVar3), размер которых ограничивается: 1. Максимальным размером передачи устройства. 2. Границами выравнивания/сектора (uVar5).
Las lecturas se realizan en partes (uVar3), cuyo tamaño está limitado por: 1. El tamaño máximo de transferencia del dispositivo. 2. Alineación/límites de sector (uVar5).   Соблюдение аппаратных ограничений. Предотвращает передачу данных, которая может пересечь границы физических секторов/страниц, требуя двух отдельных аппаратных операций.
Cumplimiento de las limitaciones de hardware. Evita las transferencias de datos que pueden cruzar los límites de los sectores físicos/páginas al requerir dos operaciones de hardware independientes.
Команда  Equipo   Формирование адреса, включающего командный бит (0x2000000), перед вызовом низкоуровневой функции обмена (FUN_300dc47c).
Genere una dirección que incluya el bit de comando (0x2000000) antes de llamar a la función de intercambio de bajo nivel (FUN_300dc47c).   Протокол Управления. Указывает устройству, что нужно выполнить операцию чтения.
Protocolo de gestión. Indica al dispositivo que realice una operación de lectura.
Синхронизация  Sincronización   Использование функций FUN_300dc574 (Ожидание) и FUN_300dc410 (Блокировка).
Uso de las funciones FUN_300dc574 (Espera) y FUN_300dc410 (Bloqueo).   Обеспечение готовности устройства и взаимного исключения (исключение одновременного доступа).
Garantizar la disponibilidad del dispositivo y la exclusión mutua (excluir el acceso simultáneo).

Exportar a Hojas de cálculo
2. UndefinedFunction_300dc8d0: Чтение с Повторами (Высокий Уровень)
2. UndefinedFunction_300dc8d0: Lectura de repetición (alta)
Эта функция использует низкоуровневый драйвер для выполнения критической операции чтения с добавлением механизма устойчивости к сбоям.
Esta característica usa un controlador de bajo nivel para realizar una operación de lectura crítica con la adición de un mecanismo de tolerancia a errores.

Аспект  Aspecto   Детали Анализа  Detalles del análisis   Значимость в Embedded Systems
Importancia en los sistemas integrados
Цель  Propósito   Чтение 4 байтов из фиксированной ячейки памяти (DAT_300dc988) для получения важного значения (напр., magic number, счётчик, конфигурация).
Lectura 4 de bytes de una ubicación de memoria fija (DAT_300dc988) para obtener un valor importante (por ejemplo, número mágico, contador, configuración).   Гарантия целостности данных. Ценность значения важнее скорости.
Garantía de integridad de los datos. El valor del valor es más importante que la velocidad.
Механизм Устойчивости  Mecanismo de estabilidad   Цикл 11 повторов. При неудаче (возврат

=−1) выполняется задержка 100 единиц времени (FUN_300de844(100)), после чего предпринимается новая попытка.
11 Ciclo de repetición. Si falla (retorno

=−1 ), las unidades de tiempo 100 se retrasan (FUN_300de844(100)) y luego se realiza un nuevo intento.   Толерантность к временным сбоям (transient faults), характерным для Flash-памяти или шины данных (например, из-за шума, сбоев питания или процесса внутреннего выравнивания заряда).
Tolerancia a fallas transitorias específicas de la memoria Flash o el bus de datos (por ejemplo, debido a ruido, fallas de energía o equilibrio de carga interno).
Управление Ресурсами  Gestión de recursos   Чёткая последовательность: Инициализация (Init), Картирование (Map), Работа (Work), Очистка (Cleanup).
Secuencia clara: Inicialización ( Init ), Asignación ( Map ), Trabajo ( Work ), Limpieza ( Cleanup ).   Безопасность. Гарантирует, что доступ к памяти правильно настроен до чтения и ресурсы освобождаются после него.
Seguridad. Garantiza que el acceso a la memoria esté configurado correctamente antes de la lectura y que los recursos se liberen después de la lectura.

Exportar a Hojas de cálculo
Вывод  Inferencia
Анализируемый код демонстрирует высокий уровень инженерной подготовки в области встроенных систем. Он сочетает сложную низкоуровневую логику, учитывающую физические ограничения аппаратного обеспечения (выравнивание, разбиение на части), с высокоуровневой логикой устойчивости к сбоям (циклы повторов и задержки). Такой подход необходим для обеспечения надёжности и долговечности систем, использующих Flash-память, где ошибки чтения, вызванные утечкой заряда или помехами, являются обычным явлением.
El código analizado demuestra un alto nivel de experiencia en ingeniería en el campo de los sistemas integrados. Combina una lógica compleja de bajo nivel que tiene en cuenta las limitaciones físicas del hardware (alineación, división) con una lógica de tolerancia a errores de alto nivel (bucles de reintento y retrasos). Este enfoque es necesario para garantizar la fiabilidad y durabilidad de los sistemas que utilizan memoria Flash, donde los errores de lectura causados por fugas de carga o interferencias son comunes.

Видео по ссылке объясняет концепцию встроенной Flash-памяти и роль, которую играют задержки и специальные операции в её работе. Embedded Flash Memory
El video en el enlace explica el concepto de memoria Flash integrada y el papel que juegan los retrasos y las operaciones especiales en su funcionamiento. Memoria flash integrada
65
Трансиверы, приемники КВ/УКВ / Re: Baofeng DM-32
« Последний ответ от Koshak 11 Октября 2025, 08:45:56 »
Я скинул пару функций DeepSeek  :D, ищем дальше...

int FUN_300dc690(uint param_1,uint param_2,undefined *param_3)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
 
  if (*DAT_300dc764 == 1) {
    iVar2 = -1;
  }
  else if (param_3 == (undefined *)0x0) {
    iVar2 = -1;
  }
  else if ((uint)DAT_300dc764[4] < param_1) {
    iVar2 = -1;
  }
  else if (param_2 == 0) {
    iVar2 = -1;
  }
  else {
    iVar2 = FUN_300dc574(0xfffffff);
    FUN_300dc410(0x14);
    piVar1 = DAT_300dc764;
    while (iVar2 == 0) {
      iVar4 = piVar1[3];
      uVar3 = piVar1[1];
      iVar2 = FUN_300dc574(0xfffff);
      if (iVar2 != 0) {
        return iVar2;
      }
      if (param_2 <= uVar3) {
        uVar3 = param_2;
      }
      uVar5 = iVar4 - (iVar4 - 1U & param_1);
      if (uVar5 < uVar3) {
        uVar3 = uVar5;
      }
      FUN_300dc47c(6,1,0,(undefined *)0x0);
      iVar2 = FUN_300dc47c(param_1 & 0xffffff | 0x2000000,4,uVar3,param_3);
      if (iVar2 != 0) {
        return iVar2;
      }
      param_2 = param_2 - uVar3;
      iVar2 = FUN_300dc574(0xfffffff);
      FUN_300dc410(0x14);
      if (param_2 == 0) {
        return iVar2;
      }
      param_1 = param_1 + uVar3;
      param_3 = param_3 + uVar3;
    }
  }
  return iVar2;
}


void UndefinedFunction_300dc8d0(void)

{
  uint uVar1;
  int iVar2;
  char cVar3;
  undefined auStack_24 [4];
 
  func_0x330c1578(0x10c,auStack_24,4);
  FUN_300c0964();
  FUN_300c0a14();
  FUN_300dc5c0(0x300b000,0x1000);
  uVar1 = DAT_300dc988;
  cVar3 = '\0';
  do {
    iVar2 = FUN_300dc690(uVar1,4,auStack_24);
    if (iVar2 != -1) break;
    FUN_300de844(100);
    cVar3 = cVar3 + '\x01';
  } while (cVar3 != '\v');
  FUN_300c0a38();
  FUN_300c0974();
  return;
}


подскажи что происходит

We are given two functions. The first one (FUN_300dc690) is a complex function that does some kind of I/O operation (likely reading from a device) and the second one (UndefinedFunction_300dc8d0) uses the first function to read 4 bytes and does so with retries.

Let me break down the first function in more detail:

FUN_300dc690:
Inputs:
param_1 (uint): offset or address
param_2 (uint): size to read
param_3 (undefined*): buffer to read into

Returns: int (0 on success, -1 on error, or other error codes)

Steps:

Check if *DAT_300dc764 is 1 -> return -1

Check if param_3 is NULL -> return -1

Check if DAT_300dc764[4] (maybe a max offset) is less than param_1 -> return -1

Check if param_2 is 0 -> return -1

Call FUN_300dc574(0xfffffff) and then FUN_300dc410(0x14). These might be setup or lock functions.

Then we enter a loop that breaks when iVar2 != 0 (which is set by the call to FUN_300dc574 inside the loop) or when we've read all data (param_2 becomes 0).

Inside the loop:

iVar4 = piVar1[3] (maybe a sector size or alignment value)

uVar3 = piVar1[1] (maybe a maximum chunk size we can read at once)

Then we call FUN_300dc574(0xfffff) again (maybe a wait for device to be ready?)

We set uVar3 to the minimum of param_2 and uVar3 (so we read in chunks)

uVar5 = iVar4 - (iVar4 - 1U & param_1) -> This calculates the number of bytes from the current offset to the next sector boundary?

Then we set uVar3 to the minimum of uVar3 and uVar5 (so we don't cross a boundary)

Then we call FUN_300dc47c(6,1,0,0) -> maybe a command to the device? (command 6, with 1 and 0 as arguments)

Then we call FUN_300dc47c with:

param_1 & 0xffffff | 0x2000000 -> maybe the address with a command bit set?

4 -> maybe the size of the address? or a mode?

uVar3 -> the size to read

param_3 -> the buffer

If that returns non-zero, we return that error.

Then we update:
param_2 -= uVar3
param_1 += uVar3
param_3 += uVar3

Then we call FUN_300dc574(0xfffffff) and FUN_300dc410(0x14) again (maybe for the next chunk)

If we break out of the loop because param_2 becomes 0, we return iVar2 (which should be 0).

So, the first function seems to be reading from a device in chunks, taking into account alignment and maximum transfer size.

Now the second function:

UndefinedFunction_300dc8d0:
This function:
- Declares a 4-byte stack buffer (auStack_24)
- Calls func_0x330c1578(0x10c, auStack_24, 4) -> this might be initializing the stack buffer or setting up a request?
- Then calls FUN_300c0964 and FUN_300c0a14 (initialization functions for the device?)
- Then calls FUN_300dc5c0(0x300b000, 0x1000) -> maybe mapping or setting up a memory region?

text
- Then it tries to read 4 bytes from the address stored in DAT_300dc988 (which is a global variable) into the stack buffer.

- It uses a loop that tries up to 11 times (cVar3 from 0 to 10) to read the 4 bytes.

- If FUN_300dc690 returns something other than -1, it breaks out of the loop.

- If it fails, it waits for 100 time units (FUN_300de844(100)) and tries again.

- Then it calls FUN_300c0a38 and FUN_300c0974 (cleanup functions) and returns.
So, the second function is trying to read a 4-byte value from a specific address (stored in DAT_300dc988) with retries.

Given the context, it seems like this code is for reading from a hardware device (like flash memory) that may require retries due to occasional read failures.

Note: The function names are automatically generated by the decompiler and don't convey meaning, but we can infer their purpose from the code.

If you have any specific questions or need more clarification, let me know.

Here's the analysis of the assembly code in English:

Function FUN_300dc690
Purpose: Read data from a device/memory with error handling and byte-by-byte access.

Logic:

Input parameter validation:

Checks global state (*DAT_300dc764)

Validates param_3 pointer

Checks param_1 boundaries

Verifies param_2 ≠ 0

Main read loop:

Calls FUN_300dc574 and FUN_300dc410 (likely device preparation)

Calculates available read block size:

c
uVar3 = min(param_2, piVar1[1]);  // Max size limitation
uVar5 = iVar4 - (iVar4 - 1U & param_1);  // Alignment/boundaries
uVar3 = min(uVar3, uVar5);  // Final block size
Executes commands via FUN_300dc47c (likely low-level device access)

Updates counters and pointers for next iteration

Returns: 0 on success, -1 on errors

Function UndefinedFunction_300dc8d0
Purpose: Read a 4-byte value with retry mechanism on failures.

Algorithm:

Initializes system (FUN_300c0964, FUN_300c0a14)

Configures memory access (FUN_300dc5c0)

Retry loop (up to 11 attempts):

Attempts to read 4 bytes via FUN_300dc690

On success - breaks loop

On error - waits 100 time units (FUN_300de844(100)) and retries

Cleans up system

Likely Context
This appears to be:

Device driver (e.g., Flash memory, EEPROM)

Hardware initialization system

Protected memory access

The code is typical for embedded systems where hardware failures are handled through retry mechanisms with delays between attempts.


66
Трансиверы, приемники КВ/УКВ / Re: Baofeng DM-32
« Последний ответ от mvisions 09 Октября 2025, 22:59:36 »
Español (original): Podría usted probar esos archivos en Visual Code, ya que lleva IA agregada al programa y puede leer archivos. Le hará una gran ayuda, pues la misma IA modificará el código a sus deseos.Si usted puede enviarme los archivos, podría intentar ayudarle.

Inglés: Could you try those files in Visual Code, since the program has AI integrated and can read files. It will be a great help, as the AI itself will modify the code to your wishes.If you can send me the files, I could try to help you.

Polaco: Czy mógłby Pan/Pani wypróbować te pliki w Visual Code, ponieważ program ma zintegrowaną sztuczną inteligencję i potrafi odczytywać pliki. To będzie dużą pomocą, ponieważ sama SI zmodyfikuje kod zgodnie z Państwa życzeniami.Jeśli może mi Pan/Pani przesłać pliki, mógłbym/mogłabym spróbować Panu/Pani pomóc.

Ruso: Не могли бы вы попробовать эти файлы в Visual Code, так как в программе встроен искусственный интеллект и она может читать файлы. Это будет большой помощью, ведь сама ИИ изменит код в соответствии с вашими пожеланиями.Если вы сможете отправить мне файлы, я мог бы попытаться вам помочь.
67
Трансиверы, приемники КВ/УКВ / Re: Baofeng DM-32
« Последний ответ от Koshak 09 Октября 2025, 19:56:18 »
JTAG отключил...
Ломать нужно прошивку  ???
68
Трансиверы, приемники КВ/УКВ / Re: Baofeng DM-32
« Последний ответ от Koshak 06 Октября 2025, 18:37:04 »
Интересно. А что это даёт?
Недокументированная функция CPS для обновления прошивки.
69
Трансиверы, приемники КВ/УКВ / Re: Baofeng DM-32
« Последний ответ от GTMoraes 06 Октября 2025, 16:56:33 »
Ещё один пароль CPS

Adjust Mode --> bfcps


Интересно. А что это даёт?


70
Трансиверы, приемники КВ/УКВ / Re: Baofeng DM-32
« Последний ответ от Koshak 06 Октября 2025, 06:42:20 »
Ещё один пароль CPS

Adjust Mode --> bfcps

Страницы: 1 ... 5 6 [7] 8 9 10