Отговори на тема  [ 413 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6, 7, 8 ... 28  Следваща
ChatGPT 
Автор Съобщение
Online
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 6:26 pm
Мнения: 608
Мнение Re: ChatGPT
Реверсвам един код и ...
Тука вече паднах от стола ...

АЗ
Можеш ли да транслираш следния код на езика C


Код:
.text:00404454 ; =============== S U B R O U T I N E =======================================
.text:00404454
.text:00404454 ; Attributes: bp-based frame
.text:00404454
.text:00404454 sub_404454      proc near               ; CODE XREF: sub_4042D0+85↑p
.text:00404454
.text:00404454 var_8           = dword ptr -8
.text:00404454 var_4           = dword ptr -4
.text:00404454 arg_0           = dword ptr  8
.text:00404454 arg_4           = dword ptr  0Ch
.text:00404454
.text:00404454                 push    ebp
.text:00404455                 mov     ebp, esp
.text:00404457                 add     esp, 0FFFFFFF8h
.text:0040445A                 xor     eax, eax
.text:0040445C                 mov     [ebp+var_8], eax
.text:0040445F                 mov     edx, [ebp+arg_4]
.text:00404462                 dec     edx
.text:00404463                 mov     [ebp+var_4], edx
.text:00404466                 jmp     short loc_404485
.text:00404468 ; ---------------------------------------------------------------------------
.text:00404468
.text:00404468 loc_404468:                             ; CODE XREF: sub_404454+3A↓j
.text:00404468                 mov     ecx, [ebp+arg_0]
.text:0040446B                 xor     eax, eax
.text:0040446D                 mov     al, [ecx]
.text:0040446F                 add     [ebp+var_8], eax
.text:00404472                 inc     [ebp+arg_0]
.text:00404475                 test    byte ptr [ebp+var_8+1], 1
.text:00404479                 jz      short loc_404485
.text:0040447B                 and     [ebp+var_8], 0FFh
.text:00404482                 inc     [ebp+var_8]
.text:00404485
.text:00404485 loc_404485:                             ; CODE XREF: sub_404454+12↑j
.text:00404485                                         ; sub_404454+25↑j
.text:00404485                 mov     edx, [ebp+var_4]
.text:00404488                 add     [ebp+var_4], 0FFFFFFFFh
.text:0040448C                 test    edx, edx
.text:0040448E                 jnz     short loc_404468
.text:00404490                 mov     al, byte ptr [ebp+var_8]
.text:00404493                 and     al, 0FFh
.text:00404495                 pop     ecx
.text:00404496                 pop     ecx
.text:00404497                 pop     ebp
.text:00404498                 retn
.text:00404498 sub_404454      endp
.text:00404498
.text:00404498 ; ---------------------------------------------------------------------------
.text:00404499                 align 4
.text:0040449C
.text:




ТОЙ
Да, мога да транслирам този код на езика C. Ето го транслираният код:

c
Copy code
Код:
int sub_404454(char* arg_0, int arg_4) {
    int var_8 = 0;
    int var_4 = arg_4 - 1;
   
    while (var_4 >= 0) {
        char ecx = *arg_0;
        var_8 += ecx;
        arg_0++;
       
        if (var_8 & 0x100) {
            var_8 = (var_8 & 0xFF) + 1;
        }
       
        var_4--;
    }
   
    return var_8 & 0xFF;
}

Това е функция, която сумира символите на символен низ от дължина arg_4 и връща резултата модул 256.




АЗ
Имаш само една грешка реда while (var_4 >= 0) трябва да е while (var_4 > 0) Поздравления.

ТОЙ
Благодаря Ви за отбелязването на грешката! Действително, в условието на цикъла while, трябва да се използва операторът > вместо >=, тъй като arg_4 се намалява с 1 на ред 0x00404462 и съответно низът има дължина arg_4 - 1. Ето и коригираната версия на кода:

c
Copy code
Код:
int sub_404454(char* arg_0, int arg_4) {
    int var_8 = 0;
    int var_4 = arg_4 - 1;
   
    while (var_4 > 0) {
        char ecx = *arg_0;
        var_8 += ecx;
        arg_0++;
       
        if (var_8 & 0x100) {
            var_8 = (var_8 & 0xFF) + 1;
        }
       
        var_4--;
    }
   
    return var_8 & 0xFF;
}

Благодаря Ви отново за забележката!


Въпреки че и това не е вярно (тъй като arg_4 се намалява с 1 на ред 0x00404462 и съответно низът има дължина arg_4 - 1. )

е впечатляващо

_________________
Вниманиене съмвишист....ИЙ.


Чет Мар 02, 2023 11:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27996
Местоположение: София
Мнение Re: ChatGPT
Чай сега ще го питам за тоя чип със сбъркания дейта шийт :)


Пет Мар 03, 2023 12:05 am
Профил
Online
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 6:26 pm
Мнения: 608
Мнение Re: ChatGPT
Ако му дадеш повече инфо, като му дадеш за какво да се хване ,предполагам че много елегантно ще се съгласи с теб ... въпреки това ще те изненада.

_________________
Вниманиене съмвишист....ИЙ.


Пет Мар 03, 2023 12:16 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27996
Местоположение: София
Мнение Re: ChatGPT
Не можа да ме изненада, говори общи приказки, но ги говори логично, ще елиминира въпросите на студенти търсещи кой да им напише курсовия проект :)


Пет Мар 03, 2023 12:20 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Апр 16, 2009 12:26 am
Мнения: 2642
Местоположение: София
Мнение Re: ChatGPT
Бахти чата гадта разбира и от вредители и препарати. Ше го питам и за моя проблем ESP8266


Пет Мар 03, 2023 6:53 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 1:21 am
Мнения: 10612
Местоположение: София
Мнение Re: ChatGPT
Ако му обясниш естеството на проблема с три думи - както обичаш да обясняваш тук, не се надявай на помощ. :lol:


Пет Мар 03, 2023 8:51 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Мар 16, 2006 8:42 am
Мнения: 10937
Местоположение: Гьотеборг
Мнение Re: ChatGPT
От консерви разбира ли? Компоти, туршии, вина, ракии, домашна и експериментална химия и физика?


Пет Мар 03, 2023 11:48 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 11:48 am
Мнения: 4715
Мнение Re: ChatGPT
:D


Прикачени файлове:
byte.jpg
byte.jpg [ 259.85 KiB | Прегледано 1292 пъти ]

_________________
main[-1u]={1};
Пет Мар 03, 2023 6:30 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Апр 16, 2009 12:26 am
Мнения: 2642
Местоположение: София
Мнение Re: ChatGPT
Grubi написа:
От консерви разбира ли? Компоти, туршии, вина, ракии, домашна и експериментална химия и физика?

От консерви не разбира, лъже и дава друга рецепта.
Не познава растения от снимка и говори глупости, но пък по име добре се справя с гугъл и дава верни линкове.


Пет Мар 03, 2023 6:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 12:31 pm
Мнения: 3302
Мнение Re: ChatGPT
Това е от StableDiffusion, но е впечатляващо

https://sites.google.com/view/stabledif ... ith-brain/


Пет Мар 03, 2023 10:34 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4194
Местоположение: Brussels / Пловдив
Мнение Re: ChatGPT
RM написа:
Реверсвам един код и ...
Тука вече паднах от стола ...

АЗ
Можеш ли да транслираш следния код на езика C


Код:
.text:00404454 ; =============== S U B R O U T I N E =======================================
.text:00404454
.text:00404454 ; Attributes: bp-based frame
.text:00404454
.text:00404454 sub_404454      proc near               ; CODE XREF: sub_4042D0+85↑p
.text:00404454
.text:00404454 var_8           = dword ptr -8
.text:00404454 var_4           = dword ptr -4
.text:00404454 arg_0           = dword ptr  8
.text:00404454 arg_4           = dword ptr  0Ch
.text:00404454
.text:00404454                 push    ebp
.text:00404455                 mov     ebp, esp
.text:00404457                 add     esp, 0FFFFFFF8h
.text:0040445A                 xor     eax, eax
.text:0040445C                 mov     [ebp+var_8], eax
.text:0040445F                 mov     edx, [ebp+arg_4]
.text:00404462                 dec     edx
.text:00404463                 mov     [ebp+var_4], edx
.text:00404466                 jmp     short loc_404485
.text:00404468 ; ---------------------------------------------------------------------------
.text:00404468
.text:00404468 loc_404468:                             ; CODE XREF: sub_404454+3A↓j
.text:00404468                 mov     ecx, [ebp+arg_0]
.text:0040446B                 xor     eax, eax
.text:0040446D                 mov     al, [ecx]
.text:0040446F                 add     [ebp+var_8], eax
.text:00404472                 inc     [ebp+arg_0]
.text:00404475                 test    byte ptr [ebp+var_8+1], 1
.text:00404479                 jz      short loc_404485
.text:0040447B                 and     [ebp+var_8], 0FFh
.text:00404482                 inc     [ebp+var_8]
.text:00404485
.text:00404485 loc_404485:                             ; CODE XREF: sub_404454+12↑j
.text:00404485                                         ; sub_404454+25↑j
.text:00404485                 mov     edx, [ebp+var_4]
.text:00404488                 add     [ebp+var_4], 0FFFFFFFFh
.text:0040448C                 test    edx, edx
.text:0040448E                 jnz     short loc_404468
.text:00404490                 mov     al, byte ptr [ebp+var_8]
.text:00404493                 and     al, 0FFh
.text:00404495                 pop     ecx
.text:00404496                 pop     ecx
.text:00404497                 pop     ebp
.text:00404498                 retn
.text:00404498 sub_404454      endp
.text:00404498
.text:00404498 ; ---------------------------------------------------------------------------
.text:00404499                 align 4
.text:0040449C
.text:




ТОЙ
Да, мога да транслирам този код на езика C. Ето го транслираният код:

c
Copy code
Код:
int sub_404454(char* arg_0, int arg_4) {
    int var_8 = 0;
    int var_4 = arg_4 - 1;
   
    while (var_4 >= 0) {
        char ecx = *arg_0;
        var_8 += ecx;
        arg_0++;
       
        if (var_8 & 0x100) {
            var_8 = (var_8 & 0xFF) + 1;
        }
       
        var_4--;
    }
   
    return var_8 & 0xFF;
}

Това е функция, която сумира символите на символен низ от дължина arg_4 и връща резултата модул 256.




АЗ
Имаш само една грешка реда while (var_4 >= 0) трябва да е while (var_4 > 0) Поздравления.

ТОЙ
Благодаря Ви за отбелязването на грешката! Действително, в условието на цикъла while, трябва да се използва операторът > вместо >=, тъй като arg_4 се намалява с 1 на ред 0x00404462 и съответно низът има дължина arg_4 - 1. Ето и коригираната версия на кода:

c
Copy code
Код:
int sub_404454(char* arg_0, int arg_4) {
    int var_8 = 0;
    int var_4 = arg_4 - 1;
   
    while (var_4 > 0) {
        char ecx = *arg_0;
        var_8 += ecx;
        arg_0++;
       
        if (var_8 & 0x100) {
            var_8 = (var_8 & 0xFF) + 1;
        }
       
        var_4--;
    }
   
    return var_8 & 0xFF;
}

Благодаря Ви отново за забележката!


Въпреки че и това не е вярно (тъй като arg_4 се намалява с 1 на ред 0x00404462 и съответно низът има дължина arg_4 - 1. )

е впечатляващо


Тя и проверката на цикъла не е нито >0 нито >=0 ами !=0 ...

_________________
Мразя да мразя ...


Пет Мар 03, 2023 11:30 pm
Профил
Online
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 6:26 pm
Мнения: 608
Мнение Re: ChatGPT
palavrov написа:
Тя и проверката на цикъла не е нито >0 нито >=0 ами !=0 ...

Така е - JNZ
Не съм толкова добър но замазах нещата до работещ вариант.
Функцията предава два аргумента, поинт към масив и дължина на масива.
вътре си създава две променливи, едната е сумата от байтовете която функцията ще връща, другата е поинт към адресите на байтовете на масива .
Записал съм го така ... .
Код:
uchar_8 fun(const void *my_array,int l){
int s;
const uchar_8 *p=(uchar_8) my_array;
for(;l;l--){
s+=*p++;
if(s&0x100)s=(s&0xFF)+1;
} ...

дължината на масива няма как да мине под 0.

_________________
Вниманиене съмвишист....ИЙ.


Съб Мар 04, 2023 5:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10368
Местоположение: Добрич
Мнение Re: ChatGPT
RM написа:
дължината на масива няма как да мине под 0.


Ако искаш да е коректно типът на дължината трябва да е unsigned или по-модерното size_t.

Иначе имаш int аргумент и ако някой по-разсеян ти подаде отрицателна стойност функцията ще се замисли яко и после ще гръмне ако свърши паметта.


Съб Мар 04, 2023 6:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Фев 13, 2013 2:35 pm
Мнения: 1748
Мнение Re: ChatGPT
За какво ви е това, като си има гугле? :)

miro_atc написа:
RM написа:
дължината на масива няма как да мине под 0.

Ако искаш да е коректно типът на дължината трябва да е unsigned или по-модерното size_t.
Иначе имаш int аргумент и ако някой по-разсеян ти подаде отрицателна стойност функцията ще се замисли яко и после ще гръмне ако свърши паметта.

То и като писах на асемблер колега от физиката ми каза да използвам други команди, че по-лесно се помнели. Оказа се, че са за знакови числа и почна да гърми...


Пон Мар 06, 2023 9:55 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Дек 14, 2004 12:31 pm
Мнения: 3302
Мнение Re: ChatGPT
Сега вече изтрепаха рибата

https://www.youtube.com/watch?v=Mqg3aTGNxZ0
https://writings.stephenwolfram.com/202 ... perpowers/


Пет Мар 24, 2023 11:15 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 413 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6, 7, 8 ... 28  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 20 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни