Results 1 to 10 of 28

Thread: Pro tips for hooking up the function

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Private Whiskas's Avatar
    Join Date
    Jan 2015
    Posts
    84
    Thanks
    69
    Thanked 20 Times in 17 Posts
    Got some news about the source of the segfault.

    Kungs code didn't worked, cause if statement is not causing server to crash..

    I've added few more prints:

    PHP Code:
    int hook_BG_IsWeaponValid(int a1int a2) {
        
        
    printf("hook_BG_IsWeaponValid -- Begin\n");
        
    printf("hook_BG_IsWeaponValid -- 1 a1 : %i, a2 : %i \n"a1a2);

        
    int v3;
        
    char v4;
        
        
    signed int (*sub_80E9758)(int a1);
        *(
    int *)&sub_80E9758 0x80E9758;
        
        
    printf("hook_BG_IsWeaponValid -- 2 a1 : %i \n"a1);


        
    int (*sub_80D9E84)(int a1signed int a2);
        *(
    int *)&sub_80D9E84 0x80D9E84;

        
    printf("hook_BG_IsWeaponValid -- 3 a1 : %i, a2 : %i \n"a1a2);
        
        
    int (*sub_80E9270)(int a1);
        *(
    int *)&sub_80E9270 0x80E9270;
        
    printf("hook_BG_IsWeaponValid -- 4 a1 : %i \n"a1);

        
    v4 1;
        if ( !(
    unsigned int8_t)sub_80E9758(a2) )
            
    v4 0;
        
    printf("hook_BG_IsWeaponValid -- 5 a2 : %i \n"a2);
        if ( !(
    unsigned int8_t)sub_80D9E84(a1 1348a2) )
            
    v4 0;
        
    printf("hook_BG_IsWeaponValid -- 6 a2 : %i \n"a2);
        
    v3 sub_80E9270(a2);
        
    printf("hook_BG_IsWeaponValid -- Last weapon used: %s\n", *(char**)(v3 0));
        if ((
    long *)(v3 132) == NULL)
        {
            
    printf("this would later crash 1\n");
            return 
    0;
        }
        if ((
    char *)(a1 1365) == NULL)
        {
            
    printf("this would later crash 2\n");
            return 
    0;
        }
        if ((
    char *)(a1 1366) == NULL)
        {
            
    printf("this would later crash 3\n");
            return 
    0;
        }
        if ((
    long *)(v3 876) == NULL)
        {
            
    printf("this would later crash 4\n");
            return 
    0;
        }
        
    printf("hook_BG_IsWeaponValid -- After Kungs IF statements \n");
        if ( !*(
    long *)(v3 132) && *(char *)(a1 1365) != a2 && *(char *)(a1 1366) != a2 && *(long *)(v3 876) != a2 )
            
    v4 0;
        
    printf("hook_BG_IsWeaponValid -- After IF statement \n");
        
    // printf("Testcall\n");

        
    return (unsigned int8_t)v4;

    Log's of two last segfaults:

    Code:
    hook_BG_IsWeaponValid -- 6 a2 : 0 
    hook_BG_IsWeaponValid -- Last weapon used: none
    hook_BG_IsWeaponValid -- After Kungs IF statements 
    hook_BG_IsWeaponValid -- After IF statement 
    hook_BG_IsWeaponValid -- Begin
    hook_BG_IsWeaponValid -- 1 a1 : 141507876, a2 : 111 
    hook_BG_IsWeaponValid -- 2 a1 : 141507876 
    hook_BG_IsWeaponValid -- 3 a1 : 141507876, a2 : 111 
    hook_BG_IsWeaponValid -- 4 a1 : 141507876 
    hook_BG_IsWeaponValid -- 5 a2 : 111 
    hook_BG_IsWeaponValid -- 6 a2 : 111 
    Segmentation fault (core dumped)
    Code:
    hook_BG_IsWeaponValid -- After Kungs IF statements 
    hook_BG_IsWeaponValid -- After IF statement 
    hook_BG_IsWeaponValid -- Begin
    hook_BG_IsWeaponValid -- 1 a1 : 141559896, a2 : 211 
    hook_BG_IsWeaponValid -- 2 a1 : 141559896 
    hook_BG_IsWeaponValid -- 3 a1 : 141559896, a2 : 211 
    hook_BG_IsWeaponValid -- 4 a1 : 141559896 
    hook_BG_IsWeaponValid -- 5 a2 : 211 
    hook_BG_IsWeaponValid -- 6 a2 : 211 
    Segmentation fault (core dumped)
    As we can see it ends at v3 = sub_80E9270(a2); which is:

    PHP Code:
    int __cdecl sub_80E9270(int a1)
    {
      return 
    dword_8576160[a1];

    According to this thread https://killtube.org/showthread.php?2067-Server-Crash&p=11792&viewfull=1#post11792 I'll have to pay more attention to weapon functions. Let you know if I found anything.

  2. The Following User Says Thank You to Whiskas For This Useful Post:

    kung foo man (10th May 2016)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •