
/*

  LeapWare LeapFTP 2.7.6.613 KeyGenerator
    * written by iqlord | .aware crew
    * www.awarenetwork.org

         ol' school keygen style *all versions*
       ------------------------------------------
        method: FOR EACH Ah
                 ACCUM+=Xh*Ah*10h-Xh*Ah+(Ah+Ah*4h)=Nh
                THEN
                 ACCUM*=ACCUM+0x034431
                 0x034431'-'ACCUM


                                     - iqlord



LeapWare LeapFTP 2.7.6.613 UserKey Disassembly
------------------------------------------------------

* Ref by a U||C Jmp @ Addr:0048448D, :00484FE7   
|
:0048464C 55                      push ebp
:0048464D 8BEC                    mov ebp, esp
:0048464F 83C4DC                  add esp, FFFFFFDC
:00484652 53                      push ebx
:00484653 33DB                    xor ebx, ebx
:00484655 895DDC                  mov dword ptr [ebp-24], ebx
:00484658 895DE0                  mov dword ptr [ebp-20], ebx
:0048465B 895DEC                  mov dword ptr [ebp-14], ebx
:0048465E 894DF8                  mov dword ptr [ebp-08], ecx
:00484661 8955FC                  mov dword ptr [ebp-04], edx
:00484664 8B45FC                  mov eax, dword ptr [ebp-04]
:00484667 E898F9F7FF              call 00404004
:0048466C 8B45F8                  mov eax, dword ptr [ebp-08]
:0048466F E890F9F7FF              call 00404004
:00484674 8B4508                  mov eax, dword ptr [ebp+08]

* Ref by a U||C Jmp @ Addr:0048460C(C)
|
:00484677 E888F9F7FF              call 00404004
:0048467C 33C0                    xor eax, eax
:0048467E 55                      push ebp
:0048467F 68AF474800              push 004847AF
:00484684 64FF30                  push dword ptr fs:[eax]
:00484687 648920                  mov dword ptr fs:[eax], esp
:0048468A 33C0                    xor eax, eax
:0048468C 8945F0                  mov dword ptr [ebp-10], eax
:0048468F 8945F4                  mov dword ptr [ebp-0C], eax
:00484692 8B45FC                  mov eax, dword ptr [ebp-04]
:00484695 E8B6F7F7FF              call 00403E50
:0048469A 8BD0                    mov edx, eax
:0048469C 85D2                    test edx, edx
:0048469E 7E33                    jle 004846D3
:004846A0 B801000000              mov eax, 00000001

* Ref by a U||C Jmp @ Addr:004846D1(C)
|
:004846A5 8B4DFC                  mov ecx, dword ptr [ebp-04]

* Ref by a U||C Jmp @ Addr:00484641(C)
|
:004846A8 0FB64C01FF              movzx ecx, byte ptr [ecx+eax-01]
:004846AD 0FAFC8                  imul ecx, eax
:004846B0 8BD9                    mov ebx, ecx
:004846B2 C1E104                  shl ecx, 04
:004846B5 2BCB                    sub ecx, ebx

* Ref by a U||C Jmp @ Addr:0048463E(C)
|
:004846B7 894DE8                  mov dword ptr [ebp-18], ecx
:004846BA DB45E8                  fild dword ptr [ebp-18]
:004846BD DC45F0                  fadd qword ptr [ebp-10]
:004846C0 8D0C80                  lea ecx, dword ptr [eax+4*eax]
:004846C3 894DE4                  mov dword ptr [ebp-1C], ecx
:004846C6 DB45E4                  fild dword ptr [ebp-1C]
:004846C9 DEC1                    faddp st(1), st(0)
:004846CB DD5DF0                  fstp qword ptr [ebp-10]
:004846CE 9B                      wait
:004846CF 40                      inc eax
:004846D0 4A                      dec edx
:004846D1 75D2                    jne 004846A5

* Ref by a U||C Jmp @ Addr:0048469E(C)
|
:004846D3 8B4508                  mov eax, dword ptr [ebp+08]
:004846D6 E83945F8FF              call 00408C14
:004846DB 8945E8                  mov dword ptr [ebp-18], eax
:004846DE DB45E8                  fild dword ptr [ebp-18]
:004846E1 DD45F0                  fld qword ptr [ebp-10]
:004846E4 DC4DF0                  fmul qword ptr [ebp-10]
:004846E7 DEC1                    faddp st(1), st(0)
:004846E9 DD5DF0                  fstp qword ptr [ebp-10]
:004846EC 9B                      wait
:004846ED DD45F0                  fld qword ptr [ebp-10]
:004846F0 83C4F4                  add esp, FFFFFFF4
:004846F3 DB3C24                  fstp tbyte ptr [esp]
:004846F6 9B                      wait
:004846F7 8D45EC                  lea eax, dword ptr [ebp-14]
:004846FA E8B954F8FF              call 00409BB8
:004846FF 8D45E0                  lea eax, dword ptr [ebp-20]
:00484702 50                      push eax
:00484703 8B55F8                  mov edx, dword ptr [ebp-08]
:00484706 B8C8474800              mov eax, 004847C8
:0048470B E82CFAF7FF              call 0040413C
:00484710 8BC8                    mov ecx, eax
:00484712 49                      dec ecx
:00484713 BA01000000              mov edx, 00000001
:00484718 8B45F8                  mov eax, dword ptr [ebp-08]
:0048471B E838F9F7FF              call 00404058
:00484720 8B45E0                  mov eax, dword ptr [ebp-20]
:00484723 8B5508                  mov edx, dword ptr [ebp+08]
:00484726 E835F8F7FF              call 00403F60
:0048472B 7548                    jne 00484775
:0048472D 8D45DC                  lea eax, dword ptr [ebp-24]
:00484730 50                      push eax
:00484731 8B55F8                  mov edx, dword ptr [ebp-08]
:00484734 B8C8474800              mov eax, 004847C8
:00484739 E8FEF9F7FF              call 0040413C
:0048473E 50                      push eax
:0048473F 8B45F8                  mov eax, dword ptr [ebp-08]
:00484742 E809F7F7FF              call 00403E50
:00484747 5A                      pop edx
:00484748 2BC2                    sub eax, edx
:0048474A 50                      push eax
:0048474B 8B55F8                  mov edx, dword ptr [ebp-08]
:0048474E B8C8474800              mov eax, 004847C8
:00484753 E8E4F9F7FF              call 0040413C
:00484758 8BD0                    mov edx, eax
:0048475A 42                      inc edx
:0048475B 8B45F8                  mov eax, dword ptr [ebp-08]
:0048475E 59                      pop ecx
:0048475F E8F4F8F7FF              call 00404058
:00484764 8B45DC                  mov eax, dword ptr [ebp-24]
:00484767 8B55EC                  mov edx, dword ptr [ebp-14]
:0048476A E8F1F7F7FF              call 00403F60
:0048476F 7504                    jne 00484775
:00484771 B301                    mov bl, 01
:00484773 EB02                    jmp 00484777

* Ref by a U||C Jmp @ Addr:0048472B(C), :0048476F(C)
|
:00484775 33DB                    xor ebx, ebx

* Ref by a U||C Jmp @ Addr:00484773(U)
|
:00484777 33C0                    xor eax, eax
:00484779 5A                      pop edx
:0048477A 59                      pop ecx
:0048477B 59                      pop ecx
:0048477C 648910                  mov dword ptr fs:[eax], edx
:0048477F 68B6474800              push 004847B6

* Ref by a U||C Jmp @ Addr:004847B4(U)
|
:00484784 8D45DC                  lea eax, dword ptr [ebp-24]
:00484787 BA02000000              mov edx, 00000002
:0048478C E863F4F7FF              call 00403BF4
:00484791 8D45EC                  lea eax, dword ptr [ebp-14]
:00484794 E837F4F7FF              call 00403BD0
:00484799 8D45F8                  lea eax, dword ptr [ebp-08]
:0048479C BA02000000              mov edx, 00000002
:004847A1 E84EF4F7FF              call 00403BF4
:004847A6 8D4508                  lea eax, dword ptr [ebp+08]
:004847A9 E822F4F7FF              call 00403BD0
:004847AE C3                      ret

:004847AF E9B4EEF7FF              jmp 00403668
:004847B4 EBCE                    jmp 00484784
:004847B6 8BC3                    mov eax, ebx
:004847B8 5B                      pop ebx
:004847B9 8BE5                    mov esp, ebp
:004847BB 5D                      pop ebp
:004847BC C20400                  ret 0004


    >>> Release compiled on msvs6sp6...
*/

#include <stdio.h>
#include <string.h>

#define WIN32_LEAN_AND_MEAN
#define VC_EXTRALEAN
#pragma comment(linker,"/OPT:NOWIN98")
#pragma comment(linker,"/nodefaultlib:libc.lib")
#pragma comment(linker,"/defaultlib:msvcrt.lib")
#pragma comment(linker,"/IGNORE:4049")
#pragma comment(linker,"/IGNORE:4089")
#pragma comment(linker,"/MERGE:.text=be")
#pragma comment(linker,"/MERGE:.rdata=aware")
#pragma comment(linker,"/MERGE:.data=kidz")

int main(int n, char** u) {
    if(n!=0x02||strlen(u[0x01])>0x06/*0x07*/) {
        printf("=> LeapFTP *all versions* ol' school keygen\n"
            "=> --- the .aware crew\n=> Usage: %s UserName [!>6]\n",u[0x00]);
        return 0x00;
    } unsigned long k=0x00;
    for(unsigned int x=0x00;x!=strlen(u[0x01]);x++)
        k+=(((int)u[0x01][x]*(x+0x01)*0x10)-
        ((int)u[0x01][x]*(x+0x01)))+((x+0x01)+(x+0x01)*0x04);
    k*=k;k+=0x034431; printf("=> UserKey: %i-%i\n",0x034431,k);
    return 0x01;
}
