Hola a todos de nuevo!!
Hoy os traigo un tema que me quedaba pendiente desde hace tiempo y en un hueco he podido hacer algo rápido para poder explicarlo lo más claro posible.
El término reversing no es más que una adaptación del término reverse engineering que se lleva usando desde hace mucho tiempo y que principalmente nació en época de enfrentamientos bélicos como medio para investigar la tecnología enemiga. Aunque siempre se ha usado el término ingeniería inversa, en el campo aplicado fuera de la informática, con la llegada de esta, se adaptó al uso.
Reversing o reverse engineeringes el término acuñado al proceso inverso aplicado a un producto final, es decir, partiendo de un diseño A para conseguir un producto B, este término es el proceso inverso, que partiendo de un producto B conseguir el preciado diseño A.
Esta tarea no es nada fácil, de hecho es una de las disciplinas más complejas en la ingeniería.
Para el caso de hoy, en el que nos centraremos en una pieza de código x86 procedente del lenguaje C/C++, me gustaría explicarlo claro para que podáis quedaros con el máximo detalle y aprender con ello algo nuevo, sin embargo, esto no pretende ser una guía y es que comprimiraños de investigación, de diferentes arquitecturas, variantes, compiladores, optimizaciones, etc. en algo escueto es complicado. Si a alguien le gusta este tema, que para mí es muy interesante, hay bastantes libros muy interesantes por la red.
Hay que tener en cuenta un aspecto importante y es que a lo largo de la historia, desde el primer compilador hasta los más modernos de hoy día, ha habido muchos cambios, en todos los aspectos de de esta ingeniería (que hay que darle de comer a parte) y que seguirá avanzando a pasos cada vez mayores. Es dificil seguir el hilo, pero más difícil es estar al día; pero no preocuparse, salvo que te dediques o te quieras dedicar a esto, no tienes mayor problema, la teoría básica sigue siendo la misma.
El siguiente snippet de arquitectura x86 (32 bits) procede de un código C/C++, en el que lo analizaremos de forma estática con la sintáxis Intel y sin herramientas. La decisión de no utilizar herramientas recae en que las herramientas no siempre nos van a salvar en todos los casos y por ello en ciertas ocasiones habrá que usar los conocimientos propios para poder completar el puzzle. Con este ejemplo, repito, no da para mucho pero sí para ver un poco en detalle lo que podría ser un ejemplo real (muy resumido).
Vale tenemos el siguiente snippet:
Dump of assembler code for function main:Antes de comenzar, realizaremos un vistazo rápido al código. Con este análisis conseguiremos ponernos en situación, como podría ser: el modo en el que se ha compilado, si tiene información de debug, alguna optimización, etc.
Se puede comprobar que se ha compilado en bit ya que los registros utilizados son los que representan tamaño de bit.
Estos registros de bit son:
Para dar un poco de sentido a estos registros, se muestra en la siguiente tabla, todos los registros que están interrelacionados.
Por tanto, se puede ver, por ejemplo, como el registro EAX de bit está conformado por el registro AX de bit y los registros de 8-bit AH y AL cada uno. Los registros de 16 y de 8 bit son específicos de las arquitecturas de 16 y 8 bit respectivamente. Siguiendo esta similitud se puede ver cómo están conformados los registros EBX, ECX y EDX.
Cada uno de estos registros tiene un uso específico.
De igual modo, los registros de punteros.
Visto esto, seguimos analizando las instrucciones mnemotécnicas en general, del código ASM.
Como se puede apreciar, hay diferentes llamadas a subrutinas (usando la instrucción CALL).
Desde una vista global, si dividimos el código en bloques significativos podría quedar algo parecido a esto.
Ahora, para convertir el código ASM en código C, teniendo en cuenta todo lo anteriormente mencionado, hará falta especificar todo el proceso seguido por las instrucciones y porqué se están usando, qué están haciendo y a qué repercute. Teniendo todo esto se podrá hacer un código C que se adapte al completo. Teniendo en cuenta que al volver a compilar con GCC para x86 el código deberá de parecerse mucho, pero es posible que algunas direcciones de memoria usadas cambien, ya que todo esto es elegido por compilador según conveniencia.
Dump of assembler code for function main:
Dadas las siguientes instrucciones, parece ser al compilar con GCC (por ejemplo), tenía por defecto activada la característica de, protección PIE y alineamiento a 16 bytes.
Para la primera instrucción (en la que todavía no se ha llamado al main), el compilador antes de todo quiere alinear la pila a un alineamiento de byte antes de insertar algo (push) en ella.
La explicación de por qué el compilador quiere alinear a byte ( bit) aunque es un poco más extenso, a groso modo es porque las instrucciones SSE2 (Single Instruction Multiple Data) especialmente usadas en computación avanzada (gráficos, codificación, decodificación, etc) están basadas en las instrucciones predecesoras SSE y MMX las cuales usaban paquetes de coma flotantes de bit, es por lo que, el acceso a memoria de estas instrucciones necesita estar alineado de esta manera.
Por tanto, para alinear, primero guarda el offset de ESP (+4) en el registro ECX.
Al finalizar el programa se devolverá el valor de ECX a ESP.
Segundo, se realiza una operación AND sobre el registro ESP con el valor de 0xfffffff0 y es que se busca mantener los 4 bits menos significativos a 0, esto es porque busca tener desplazamientos múltiplos de 16 bytes y para ello debe tener los 4 bits menos significativos a 0 (2^4 = 16).
0xbd <+4>: and esp,0xfffffff0
Una vez que ha realizado el correspondiente alineamiento, guarda en la pila el valor de offset que se guardó en la primera instrucción, para poder recuperarlo al final del programa y restablecer todos los cambios.
0xc0 <+7>: push DWORD PTR [ecx-0x4]
Guarda el valor del registro EBP en la pila de programa actual para poder recuperarlo al final de programa. En definitiva, está haciendo un backup de los registros que va a usar durante la ejecución del programa dado que no se quiere perder su valor.
0xc3 <+10>: push ebp
Una vez que ya ha guardado la dirección que contenía el registro EBP en la pila, ahora guardará el puntero a la pila de programa en EBP, y podrá utilizarlo como offset en las instrucciones a lo largo del programa.
0xc4 <+11>: mov ebp,esp
Guarda en la pila el valor de EBX y ECX para poder usar el registro durante el programa.
Ambos registros se reestablecerán al final de la ejecución del programa.
Una vez realizado el backup de los valores de los registros, empieza reservando el espacio en la pila para las variables locales que a continuación se declararán. Esta reserva es de 16 bytes, aunque no por eso signifique que se utilizará en su totalidad, es decir, sabemos que el compilador quiere que haya alineamiento en 16 bytes y, por tanto, puede quedar espacio sin usar. Dado que la pila crece hacia abajo (downwards) es por lo que usa la instrucción SUB. Dado que ESP va variando durante la ejecución, se usa el registro EBP (instrucción +11) para servir de ayuda, por tanto, cuando EBP = ESP la pila deja de tener memoria reservada.
0xc8 <+15>: sub esp,0x10
En este punto, utiliza la siguiente instrucción para satisfacer la protección PIE. Para ello, llama a <__xget_pc_goalma.org> alojada en la dirección 0xc0 y guarda en EBX el valor del contador de programa de la siguiente instrucción, esto es: 0xd0 <+23>
0xcb <+18>: call 0xc0 <__xget_pc_goalma.org>
Con la siguiente instrucción, EBX pasa de tener 0xd0 a 0x, es decir, (0xd0 + 0x2e30).
0xd0 <+23>: add ebx,0x2e30
Carga la dirección efectiva de [EBX-0x1ff8], es decir setea la dirección de memoria de la cadena almacenada en dicha posición, esto es la dirección de memoria que apunta al primer caracter, al registro EAX. Recordando que EBX a su vez depende el PC (Program Counter) . Este registro es usado para operaciones aritméticas (probablemente se haga alguna operación con dicha cadena); de este modo, se usará más adelante como puntero que apunta al inicio de la cadena. Comienza el main.
Tenemos probablemente un char *.
Mueve la dirección de memoria (puntero) donde se encuentra la cadena anterior y lo almacenada en relación con el registro EBP.
0xdc <+35>: mov DWORD PTR [ebp-0x10],eax
Vuelve a reservar memoria en la pila. Un total de 12 bytes.
0xdf <+38>: sub esp,0xc
Al reservar este espacio, puede meter en la pila el valor de EBP-0x10, que contiene el puntero a la cadena anterior. Esto debido a que varias convecciones de la arquitectura x86 pasan los valores de argumentos a través de la pila.
0xe2 <+41>: push DWORD PTR [ebp-0x10]
Llama a srtlen para calcular la longitud de la cadena, utilizando como parámetro de entrada el valor que acaba de ser metido en la pila. El valor 0x es una dirección absoluta donde estará la función.
El valor devuelto por strlen, se almacena en el registro EAX.
Libera memoria de la pila, un total de 16 bytes. En este punto, ha liberado los 12 bytes que había reservado en <+38> +4 bytes del puntero (EBP-0x10). En este punto, el puntero ESP está como estaba después de <+41>, y además en EAX el valor de longitud devuelto por strlen.
0xea <+49>: add esp,0x10
Guarda en memoria el valor de EAX que contiene la longitud en EBP-0x14, es decir, el tamaño de la cadena.
0xed <+52>: mov DWORD PTR [ebp-0x14],eax
Vuelve a reservar memoria en la pila. Un total de 12 bytes.
0xf0 <+55>: sub esp,0xc
Carga la dirección efectiva de [EBX-0x1fe8], es decir setea la dirección de memoria de la cadena almacenada en dicha posición, esto es la dirección de memoria que apunta al primer caracter, al registro EAX. En definitiva igual que en <+29>. Como el valor de EAX pasó a la pila, ahora está libre.
Tenemos probablemente un char *.
Guarda en la pila el valor de EAX, de igual forma, este método es usado para pasar por parámetro el valor a la subrutina puts.
0xf9 <+64>: push eax
Llama a la subrutinaputs para imprimir por consola el valor pasado por la pila que contendrá el puntero apuntando al primer caracter del char*, se encargará de imprimir por consola toda la cadena hasta encontrar el \0.
0xfa <+65>: call 0x <puts@plt>
Vuelve a liberar memoria un total de 16 bytes.
0xff <+70>: add esp,0x10
Guarda en memoria el valor 0 en EBP-0xc.
0x <+73>: DWORD PTR [ebp-0xc],0x0
Salto incondicional a <main+>. Viendo la estructura de forma general se puede observar que que estamos en un bucle for, donde evaluará primero la condición y posteriormente ejecutará las intrucciones del cuerpo del bucle.
0x <+80>: jmp 0x <main+>
Mueve el valor 0, 1, 2, etc. almacenado en EBP-0xc al registro EDX, este valor es el que se irá aumentando a lo largo del bucle.
0xb <+82>: mov edx,DWORD PTR [ebp-0xc]
Tras mover en <+35> el valor de EAX (la longitud de la cadena), ahora se puede utilizar el registro, y en este punto, vuelve a mover a EAX el valor del puntero que apunta a la cadena “goalma.org”.
0xe <+85>: mov eax,DWORD PTR [ebp-0x10]
Al realizar la siguiente adición, donde a EAX (que tiene el puntero que apunta a la cadena “goalma.org”) el valor de EDX (el acumulador del bucle for), lo que se consigue gracias a la aritmética de punteros, es desplazarnos por cada uno de los caracteres de la cadena.
0x <+88>: add eax,edx
Cargará un byte en AL el registro de 8 bits que conforma EAX y setea el resto de EAX a 0, en definitiva, en este caso, dejará todos los bits a 0 salvo el registro AL. Esta operación es sin signo.
0x <+90>: movzx eax,BYTE PTR [eax]
Y aquí, el valor de AL lo vuelve a mover a EAX, pero dejando el resto a 1, esta operación es con signo. Es lo mismo que derefenciar.
El tener ambas instrucciones juntas no aporta mucho sentido, probablemente porque el compilador no ha optimizado (probablemente sobre la primera instrucción).
Vuelve a reservar memoria en la pila. Un total de 12 bytes.
0x <+96>: sub esp,0xc
Guarda en la pila el valor de EAX, de igual forma, este método es usado para pasar por parámetro el valor a la subrutina putchar.
0xc <+99>: push eax
Llama a la subrutinaputchar para imprimir por consola el caracter que es apuntado por la dirección EAX pasado por la pila, en cada vuelta este valor irá cambiando debido a las operaciones anteriores (desreferenciación) apuntando en cada momento a un caracter del char*.
0xd <+>: call 0x <putchar@plt>
Libera memoria un total de 16 bytes.
0x <+>: add esp,0x10
Suma 1 al iterador del bucle.
0x <+>: add DWORD PTR [ebp-0xc],0x1
En este punto del programa, mueve el valor de EBP-0xc al registro EAX para realizar operaciones aritméticas. En este caso, para realizar una comparación. En este punto, se ha podido llegar desde la ejecución normal de las instrucciones anteriores o desde el salto incondicional de <+80>.
0x <+>: mov eax,DWORD PTR [ebp-0xc]
Al tener el valor en EAX se puede realizar la comparación con EBP-0x14 (la longitud de la cadena). La instrucción CMP realiza la resta de EAX [EBP-0x18], si el resultado (que no afecta a los operandos) es negativo se activará el flag correspondiente, es decir, sería lo mismo que decir que A < B; en caso contrario, si el resultado es positivo significa que A > B.
Por tanto, si A < B el flag CF=1, si A > B, el flag CF=0.
Además, la instrucción CMP, activa otro flag llamado ZF, en el que, si los operandos son iguales, entonces el ZF=0, en caso contrario, ZF=1.
Ambos flags son valores de un registro específico que es usado como auxiliar en este tipo de operaciones. CF es el flag de llevada (Carry Flag) y ZF es el flag de cero (Zero Flag)
Finalmente, la instrucción JL (Jump if Less) se fijará en ambos registros (CF y ZF) y si A < B en el que tiene en cuenta el signo, saltará a <main+82>. En caso de que sea A >= B no saltará.
0xf <+>: jl 0xb <main+82>
Vacía el registro EAX. Ya no se usará más.
0x <+>: mov eax,0x0
Restaura ESP. Ahora apunta a lo que apuntaba en un principio.
0x <+>: lea esp,[ebp-0x8]
Restaura todos los registros empezando por ECX ya que fue el último en guardarse en la pila, será el primero en salir y así sucesivamente.
0x <+>: pop ecx
Se deshace los cambios que se hicieron al principio de la ejecución del programa y devuelve el control ret(urn).
0xc <+>: lea esp,[ecx-0x4]
Finalmente ya hemos realizado el análisis del código ASM, ahora con esto falta montar el código C que al compilar volverá a dar este ASM.
El código C resultante sería:
#include <stdio.h>Para volver a compilar, y poder comparar (ensamblador-ensamblador) y ver si estamos en lo correcto, podemos hacer:
$ gcc code.c -o goalma.org -m32Para analizar dicho ejecutable, podríamos utilizar el conjunto de herramientas GDB (The GNU Debugger) y analizar dicho binario, pero podéis usar otros depuradores (hay bastantes muy buenos).
Los pasos con GDB sería:
$ gdbAl comparar pensad que algunas direcciones de memoria podrán cambiar ya que depende de varios factores, entre ellos de la versión de la compilador que se esté usando.
Todo esto es la teoría con un ejemplo muy pequeño (y fijáos si se ha alargado la cosa), pero en todo reversing influyen muchos factores que, para tanto al humano como a las herramientas, este análisis sea bastante complicado. Estos factores pueden ser optimizaciones, código inservible (de relleno) y el peor, el ofuscamiento, ya sea con herramientas para ello o que el mismo programador inserte código ofuscado (algunas veces queriendo y otras no).
Espero haberme explicado con claridad, que os haya gustado y que hayáis aprendido algo nuevo. Si alguien ve, que se me ha bailiado algo, ya sea una expresión o que he indicado que se hacía tal cosa en algún apunte, decidmelo. Siempre puedo corregirlo! 😉
Nos vemos en el siguiente post!
¡Feliz año ! 🎉 🎊
Happy Hacking!
Entra al grupo de allhacked!
Autor: Rafael Moreno López.
16 ER
В последние месяцы несколько активных контент-мейкеров собирали свой сезон - "Сезон Чумы". Вот и тизер даже сделали.
+1 к самому крутому игровому комьюнити!
ER
ПОДКАСТ НЕ ВЫЙДЕТ
Уже третий день происходит то, что совершенно невозможно уложить в голове.
Наш подкаст, как и каждая вторая семья в России, тесно связан с Украиной — это наша четвертинка, без которой мы никогда не были бы goalma.org И происходящее сейчас не может быть оправдано никакими разумными доводами, это зло, безумие и страшный сон.
Мы понимаем, что многим наш подкаст мог бы помочь отвлечься от этого кошмара. Но мы просто не можем позволить себе сидеть и из комфорта наших домов рассказывать о том, как же здорово играть в Destiny, когда четвёртый микрофон пустует, когда нашим близким приходится покидать свой дом и думать о том, как укрыться от бойни.
Берегите себя и ваших близких.
Нет войне!
40 ER
Любишь билды?
Мечтаешь собирать их самостоятельно на зависть всем друзьям?
У тебя есть уникальный шанс научиться этому абсолютно бесплатно.
Профессор академии 6-и Статов, преподаватель кафедры Модостроения и дипломированный специалист в использовании DIM систем Семён Данилыч MadnessBuccaneer записал для всех уникальный образовательный курс из семи частей!
«Гигачадский курс по билдстроению», с позволения профессора, был любезно оцифрован и выложен на его YouTube канал.
Вопрос только один, почему ты еще не смотришь?
ER
Концепты крепости хайвовской подруги от Sung Choi для Shadowkeep.
33 ER
АРБАЛЕТ, ПОТЕРЯ ГРАВИТОНОВ, УКЛОНЕНИЕ MK. 44, АСТРОЦИТНАЯ ВСЕЛЕННАЯ, АНГАР
25 ER
O despacho aduaneiro é o procedimento pelo qual as mercadorias são oficialmente liberadas pelas autoridades aduaneiras para entrar ou sair de um país. Envolve uma série de etapas e controles para garantir o cumprimento das leis e regulamentações aduaneiras.
Durante o despacho aduaneiro, são verificados documentos como faturas comerciais, conhecimentos de embarque e certificados de origem. Além disso, as mercadorias podem passar por inspeções físicas, amostragens e análises laboratoriais, quando necessário, para verificar sua conformidade com as normas e regulamentos vigentes.
Os impostos e taxas de importação ou exportação também são calculados durante o processo de despacho aduaneiro, e o pagamento desses valores deve ser realizado antes da liberação das mercadorias. Dependendo do país e da natureza das mercadorias, podem ser aplicados tarifas aduaneiras, impostos sobre o valor agregado (IVA) e outros encargos.
O despacho aduaneiro pode ser realizado por importadores, exportadores ou por despachantes aduaneiros que são profissionais especializados na área. Eles atuam como intermediários entre as empresas e as autoridades aduaneiras, garantindo que todos os requisitos legais sejam atendidos e facilitando o processo de liberação das mercadorias.
Aqui estão cinco dicas importantes para facilitar o despacho aduaneiro:
Um despacho aduaneiro bem-sucedido é fundamental para evitar atrasos, multas ou outras penalidades. Portanto, é importante contar com profissionais experientes e estar em conformidade com todas as regulamentações aplicáveis. Um processo eficiente de despacho aduaneiro contribui para o comércio internacional, facilitando o fluxo de mercadorias entre os países e impulsionando o crescimento econômico.
Заманивание, потом слив
KOKS Октябрь 7,
Можно давно уже было внести сие «чудо» в черный список, не тратить на него свое драгоценное время. Но я решил пойти по не такому легкому пусти, то есть зарегистрировался, внес баксов, то есть даже чуть больше, чем ту сумму, которая была нужна для того, чтобы нормально себя чувствовать во время трейдинга, ну а потом уже меня начали понемногу сливать. Сперва в парах с долларом, а потом и в остальных, причем плавно, неспешно, думали, что я не буду на все это обращать внимание, спишу на торговые проблемы, недостаток ликвидности, прочий бред. Э нет, я не тупой, не глупой), развод быстро вижу.
Так что дальше не стал продолжать сотрудничество с этой компанией. Да, потерял баксов, но это будет ценным уроком для меня, не работать больше с аналогичными мусорными конторами, которые рисуют любые котировки, лишь бы слить своего клиента и отнять у него все деньги до последней кпоейки.
Ответить
Нет нормального регулирования
Lucky Октябрь 21,
Пускай получат нормальное регулирование, которое будет основным и единственным доказательством надежности компании, тогда и можно будет поговорить о торговле. Но а пока, это стандартный фейковый посредник.
Ответить
Есть лишь гарантия слив бабла
Debb Октябрь 22,
Страховка? Какая еще страховка? От брокера, которому якобы уже 10 лет, но на самом деле его создали в году? Но это же полный смех, бред! Однако немало людей еще не могут отличить правду от вранья, и они постоянно вкладываются в такие проекты.
Терять деньги многим не привыкать, но я так и не могу понять, зачем это делать, какая выгода от подобных вещей? Это какое-то извращенное чувство того, что ты слил, отдал свои деньги другим ребятам? Не знаю, как по мне, то такие ресурсы нужно относить в Черный Список. Официальный сайт до сих пор у них не в блокировке, и я не понимаю почему, куда смотрит регулятор ЦБ РФ, что не отдает распоряжение о блокировке этого ресурсика.
ТО, что это грязная кухня, понятно сразу же: бонус % на депозит, кредитное плечо аж до , отсутствие контроля от хотя бы одного вразумительного регулятора. Вам это ничего не напоминает? Да каждый второй мошенник, который когда-либо существовал и разводил людей на деньги, имел такие же условия для торговли.
Ответить
Очень много вранья
Волк Октябрь 29,
Ой, сколько же тут вранья, ей Богу. И про большой срок работы наврали, и про ECN наврали, и про безопасность наврали. А у самих кроме регистрации на бумажке в Гренадинах ничего и нет. Смешно смотреть на то, как эти скамеры пытаются разводить людей))
Ответить
Денег не ждите!
Хиски Октябрь 31,
Как только прошел регистрацию, так сразу же меня принялись сливать по полной, и происходило это именно на разрекламированной криптовалюте BTCUSD, ETHUSD, и только после этого я понял, что если и заниматься криптотрейдингом, то лучше все это делать на криптовалютных биржах, но не через Esperio. А здесь можно лишь минус поймать, как я поймал еще весной года, наивно полагая, что ресурс, компания, зарегистрированная в такой стране как Сент-Винсент и Гренадины, и правда дает людям возможность торговать, получать деньги на мировом рынке, выводить и так далее. Был откровенным лохом, я это признаю, сознаюсь в этом. И никому одновременно с этим не могу порекомендовать данную организацию. Вас будут доить на деньги, впаривать всякого рода шлак в виде сигналов и аналитики. Лишь бы вкладывали деньги, сливали, вкладывали и затем снова сливали.
Ответить
Одни лишь байки о профитном трейдинге
Nik21 Ноябрь 1,
Мне интересно, а где же эти тысяч зарегистрированных пользователей? Где их искать? А то как-то странно читать о таком большом количестве людей, которые трудятся на сайте Esperio, но не иметь возможности лично с ними пообщаться, ну хотя бы с кем-то.
Нет, на самом деле ничего такого у меня не выйдет, да и выйти не может потому, что мне и всем другим наивных юзерам врут о надежности ДЦ, о большом количестве реальных клиентов, о выводах денег. Ресурс так себе, без репутации и имени, администрация нагло врет пользователям, не слушайте представителей сайта. Домен у них работает всего лишь с года, о каком может вообще идти речь?
Если вообще дальше заводить речь про отрицательные моменты у Esperio, то можно будет выделить и отсутствие лицензии, и отсутствие нормальных документов, доказывающих, что резервы компании превышают общий вложенный капитал трейдеров. То бишь никаких гарантий нет.
Ответить
Быстрая потеря средств
Love Ноябрь 3,
А вы посмотрите, где именно они зарегистрированы. И сразу же станет ясно, что с платформой родом из офшорной помойки ничего общего иметь нельзя. Такие ресурсы быстренько создают, практически на конвейере идет штамповка. Не может компания, которая была зарегистрирована относительно недавно в такой офшорной стране как Гренадины, быть проверенной, честной, выплачивать хотя бы кому-то деньги. Это нереально даже с точки зрения адекватного восприятия торговли как таковой. Деньги идут в карман этим мошенникам и скамерам, уже сто раз об этом рассказывали люди, да и рецензий негативных море. Запомните, если вы видите офшорную конторку, без таких лицензий, как FCA, CySEC, ASIC, ЦБ РФ, то это %-ый лохотрон и кухонный разводняк. Так что и смысла торговать в Эсперио нет никакого, абсолютно.
Ответить
Не понимаю, что происходит
koteika Ноябрь 13,
Не понимаю, что происходит. Торговал тут месяц, все шло хорошо, сейчас решил вывести прибыль долларов и ничего не происходит. Уже 2 недели прошло, как моя заявка висит в Esperio, и все также на том же месте. Что делать, хз
Ответить
Зарабатывать тут вариантов куча
Allo Ноябрь 27,
Компания предлагает много дополнительных услуг, много возможностей. Тут зарабатывать деньги вариантов масса, хоть самостоятельно торгуй, хоть пассивно инвестируй в фонд, в готовые инвестпортфели, в копирование сделок. Вы можете создать аж до 5 источников дохода, все на одной платформе. Есть партнерская программа, активно рекламируйте брокера (есть за что рекламировать между прочим), и получайте еще больше профита с рефералов. В общем, вариантов масса, и мошенничеством даже не пахнет.
Ответить
64 ER
Титаны опять победили в Играх Стражей. Завала всех обманул.
ER
Охотник и Саватун!
Автор арта: [club
Секреты Черного Сада за авторством Блейка Роттингера.
69 ER
А ведь [club
Отыскать высокооплачиваемую занятие для девах один-другой броской внешностью равным образом приятными манерами я пас просто, если девать расходовать юношество на заводы/офисы, что-что экспромтом обратить чуткость сверху эскорт. Это подлинная возможность благоденствовать и трудиться в течение свое ферза, воплощая свои мечтания а также зарабатывая приличные деньги без напряженного труда. Эксплуатация для молодых женщин в эскорте позволяет круто изменить судьбу в течение топовую сторону. Хотя обо по всем статьям числом порядку.
КОМУ СОГЛАСЕН РАБОТА В ТЕЧЕНИЕ ЭСКОРТЕ?
Страсть целесообразно думать, что текущий шоу-бизнес только для ноги от ушей моделей начиная с. ant. до параметрами Конечно, симпатичная внешность в нынешнем сече – неприменное условие. Хотя понятие краль язык каждого личное, равным образом невыгодный хронически внушительному мужчин требуется царапанная красавица.
Эпизодично на черте эскорта избирают деваху со хорошим познанием иноземного слога, умением взять шефство другую фразу разговора на деловом ужине чи официозном приеме. Некоторые мужчины ищут спортивную спутницу, рассчитывая в горы покататься сверху лыжах или заняться рафтингом. Требования наиболее многообразные, и работа чтобы женщин в течение сопровождение услуг найдется всегда.
Муляжные эскорт учреждения предъявляют суровые условия к молодым женщинам, обмишуривают кастинги равным образом жесткий отбор, хотя бессчетно стоит этого боятся. Эксплуатация сопровождение моделью что ль достаться дивчине с первым объемом цицьки, если язык нее является харизма, всегда отличное настроение и милая внешность. Эскортница соответственна снабжать дядьку позитивом, находить возможность очаровывать, смотреть в рот, говорить а также шш, когда нужно. Ее этюд – приятное времяпрепровождение клиента и исполнение евонный капризов. РАВНЫМ ОБРАЗОМ чем унше она навести справки не без; сим, тем вот через будут гонорары.
ЯКО ПОПАСТЬ НА ЭСКОРТ
Куда можно устроиться сверху занятие девахе, чтобы немерено натуживаясь зарабатывать приличные деньги на достойную жизнь? Альтернатив не штабель, особенно разве что юница желторота а также хоть невыгодный поспела закончить университет, унаследовать профессию.
Разве что вам занимит [url=https://jobgirlru/]https://jobgirlru/[/url] эксплуатация чтобы девок с высоким доходом, тогда элитный шаг – найти сопровождение фотоагенство (а) также обоссать туда. Вас просят уписать анкету, найти работу чуть-чуть домашних снимок и пройти немногочисленное собеседование раз-два агентом. ЧТО-ЧТО через некоторое время остается улучить удобный для себе фотоформат опуса (хоть выезжать согласен предел, работать на
Дубае чи исключительно в Москве) и спровоцировать свежеиспеченную увлекательную жизнь.
Является вариант отыскать опус для дев в течение телеграм канале, который работает на эскорт услугах. Хотя новичков туды не благоволят, а если равным образом допустят, то скорее честь имею кланяться быстро блокируют, поскольку никто вы через некоторое время не располагать информацией, что-что таким образом обещать маловыгодный сможет. Поэтому лучше экспромтом напрямую обращаться в агентство.
Вы, конечно, сможете попробовать найти покупателей самостоятельно сверху сайтиках знакомств, в течение прибавленьях также сверху других площадках, но гарантии оклада, да чтобы более сохранности шушера жуть даст. И объявление «девушка отыскивает работу» числа привлечет серьезных состоятельных мужчин. Этто кстати, уже не эскорт, что-что сильнее древняя профессия.
казино с бесплатным фрибетом Игровой автомат Won Won Rich играть бесплатно ᐈ Игровой Автомат Big Panda Играть Онлайн Бесплатно Amatic™ играть онлайн бесплатно 3 лет Игровой автомат Yamato играть бесплатно рекламе казино vulkan игровые автоматы бесплатно игры онлайн казино на деньги Treasure Island игровой автомат Quickspin казино калигула гта са фото вабанк казино отзывы казино фрэнк синатра slottica казино бездепозитный бонус отзывы мопс казино большое казино монтекарло вкладка с реклама казино вулкан в хроме биткоин казино 999 вулкан россия казино гаминатор игровые автоматы бесплатно лицензионное казино как проверить подлинность CandyLicious игровой автомат Gameplay Interactive Безкоштовний ігровий автомат Just Jewels Deluxe как использовать на 888 poker ставку на казино почему закрывают онлайн казино Игровой автомат Prohibition играть бесплатно