首页
社区
课程
招聘
[求助][讨论]IDA 逆向遇到一个奇怪问题
发表于: 2013-10-20 21:28 7062

[求助][讨论]IDA 逆向遇到一个奇怪问题

2013-10-20 21:28
7062
用IDA 查看 iphlpapi.dll 内容:

.text:76D32BA0 ; int __stdcall sub_76D32BA0(int, DWORD dwIoControlCode, LPVOID lpInBuffer, int, LPVOID lpOutBuffer, int)
.text:76D32BA0 sub_76D32BA0 proc near ; CODE XREF: sub_76D32DC6+68p
.text:76D32BA0 ; sub_76D3305B-184p ...
.text:76D32BA0
.text:76D32BA0 var_28 = dword ptr -28h
.text:76D32BA0 var_24 = dword ptr -24h
.text:76D32BA0 var_20 = dword ptr -20h
.text:76D32BA0 var_1C = dword ptr -1Ch
.text:76D32BA0 var_18 = dword ptr -18h
.text:76D32BA0 var_14 = dword ptr -14h
.text:76D32BA0 var_10 = byte ptr -10h
.text:76D32BA0 var_8 = byte ptr -8
.text:76D32BA0 arg_0 = dword ptr 8
.text:76D32BA0 dwIoControlCode = dword ptr 0Ch
.text:76D32BA0 lpInBuffer = dword ptr 10h
.text:76D32BA0 arg_C = dword ptr 14h
.text:76D32BA0 lpOutBuffer = dword ptr 18h
.text:76D32BA0 arg_14 = dword ptr 1Ch
.text:76D32BA0
.text:76D32BA0 ; FUNCTION CHUNK AT .text:76D34ABF SIZE 00000027 BYTES
.text:76D32BA0 ; FUNCTION CHUNK AT .text:76D36250 SIZE 00000088 BYTES
.text:76D32BA0 ; FUNCTION CHUNK AT .text:76D3894C SIZE 0000001E BYTES
.text:76D32BA0
.text:76D32BA0 mov edi, edi
.text:76D32BA2 push ebp
.text:76D32BA3 mov ebp, esp
.text:76D32BA5 sub esp, 28h
.text:76D32BA8 cmp [ebp+arg_0], 29h
.text:76D32BAC jz loc_76D34ABF
.text:76D32BB2 push ebx
.text:76D32BB3 push esi
.text:76D32BB4 push edi
.text:76D32BB5 xor edi, edi
.text:76D32BB7 cmp hDevice, 0FFFFFFFFh
.text:76D32BBE jz loc_76D36250
.text:76D32BC4
.text:76D32BC4 loc_76D32BC4: ; CODE XREF: sub_76D32BA0+3733j
.text:76D32BC4 mov esi, [ebp+arg_14]
.text:76D32BC7 push edi ; lpOverlapped
.text:76D32BC8 lea eax, [ebp+dwIoControlCode]
.text:76D32BCB push eax ; lpBytesReturned
.text:76D32BCC push dword ptr [esi] ; nOutBufferSize
.text:76D32BCE mov eax, [ebp+arg_C]
.text:76D32BD1 push [ebp+lpOutBuffer] ; lpOutBuffer
.text:76D32BD4 push dword ptr [eax] ; nInBufferSize
.text:76D32BD6 push [ebp+lpInBuffer] ; lpInBuffer
.text:76D32BD9 push 120003h ; dwIoControlCode
.text:76D32BDE push hDevice ; hDevice
.text:76D32BE4 call ds:DeviceIoControl
.text:76D32BEA test eax, eax
.text:76D32BEC mov eax, [ebp+dwIoControlCode]
.text:76D32BEF mov [esi], eax
.text:76D32BF1 jz loc_76D3895F
.text:76D32BF7 xor eax, eax
.text:76D32BF9
.text:76D32BF9 loc_76D32BF9: ; CODE XREF: sub_76D32BA0+5DBAj
.text:76D32BF9 ; sub_76D32BA0+5DC5j
.text:76D32BF9 pop edi
.text:76D32BFA pop esi
.text:76D32BFB pop ebx
.text:76D32BFC
.text:76D32BFC locret_76D32BFC: ; CODE XREF: sub_76D32BA0+1F33j
.text:76D32BFC leave
.text:76D32BFD retn 18h
.text:76D32BFD sub_76D32BA0 endp
.text:76D32BFD


本人菜鸟不知道 sub_76D32BA0 是什么东东 主要功能是什么 希望 大牛指点

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
sub_76D32BA0是IDA逆向时候的的函数临时名字
2013-10-20 21:36
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
应该是个函数吧!
2013-10-20 21:40
0
雪    币: 133
活跃值: (548)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
恩是函数 不知道 主要功能是做什么的
2013-10-20 21:48
0
雪    币: 133
活跃值: (548)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
.text:76D32BC4                 mov     esi, [ebp+arg_14]
.text:76D32BC7                 push    edi             ; lpOverlapped
.text:76D32BC8                 lea     eax, [ebp+dwIoControlCode]
.text:76D32BCB                 push    eax             ; lpBytesReturned
.text:76D32BCC                 push    dword ptr [esi] ; nOutBufferSize
.text:76D32BCE                 mov     eax, [ebp+arg_C]
.text:76D32BD1                 push    [ebp+lpOutBuffer] ; lpOutBuffer
.text:76D32BD4                 push    dword ptr [eax] ; nInBufferSize
.text:76D32BD6                 push    [ebp+lpInBuffer] ; lpInBuffer
.text:76D32BD9                 push    120003h         ; dwIoControlCode
.text:76D32BDE                 push    hDevice         ; hDevice
.text:76D32BE4                 call    ds:DeviceIoControl

这里很疑惑 啊 控制码 120003h       是不是 跟TCP 端口有关啊
2013-10-20 21:49
0
雪    币: 357
活跃值: (3413)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
6
ULONG __userpurge sub_76D32BA0<eax>(int a1<edi>, HANDLE FileHandle, int a3, int a4, int a5, int a6, int a7)
{
     int v7; // esi@3
     bool v8; // zf@3
     ULONG result; // eax@4
     NTSTATUS v10; // ebx@8
     OBJECT_ATTRIBUTES ObjectAttributes; // [sp+0h] [bp-28h]@8
     struct _IO_STATUS_BLOCK IoStatusBlock; // [sp+18h] [bp-10h]@8
     UNICODE_STRING DestinationString; // [sp+20h] [bp-8h]@8

     if ( FileHandle == (HANDLE)0x29 )
          return sub_76D34AEB(a3, a4, a5, a6, a7);
     if ( dword_76D44104 == 0xFFFFFFFF )
     {
          RtlInitUnicodeString(&DestinationString, L"\\Device\\Tcp");
          ObjectAttributes.ObjectName = &DestinationString;
          ObjectAttributes.Length = 0x18;
          ObjectAttributes.RootDirectory = 0;
          ObjectAttributes.Attributes = 0x40;
          ObjectAttributes.SecurityDescriptor = 0;
          ObjectAttributes.SecurityQualityOfService = 0;
          v10 = NtCreateFile(&FileHandle, 0x20100000u, &ObjectAttributes, &IoStatusBlock, 0, 0x80u, 3u, 3u, 0x20u, 0, 0);
          EnterCriticalSection(&unk_76D440A0, a1);
          if ( dword_76D44104 == 0xFFFFFFFF )
          {
               if ( v10 < 0 )
               {
                    LeaveCriticalSection(&unk_76D440A0);
                    return RtlNtStatusToDosError(v10);
               }
               dword_76D44104 = (int)FileHandle;
          }
          else
          {
               NtClose(FileHandle);
          }
          LeaveCriticalSection(&unk_76D440A0);
     }
     v7 = a7;
     v8 = DeviceIoControl(dword_76D44104, 0x120003, a4, *(_DWORD *)a5, a6, *(_DWORD *)a7, &a3, 0) == 0;
     *(_DWORD *)v7 = a3;
     if ( v8 )
          result = GetLastError();
     else
          result = 0;
     return result;
}
2013-10-20 21:53
0
雪    币: 133
活跃值: (548)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
6楼的代码是否可以理解为 创建一个TCP 通信对象
2013-10-20 22:19
0
雪    币: 8
活跃值: (33)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
IDA又不会去猜你函数名是什么 一些内部函数他就以这种方式代替- -
2013-10-21 09:35
0
游客
登录 | 注册 方可回帖
返回
//