このページはEtoJ逐語翻訳フィルタによって翻訳生成されました。

翻訳前ページへ


IDA - dnsapi.dll!Dns_Ip6ReverseNameToAddress_A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
調印するd int __stdcall Dns_Ip6ReverseNameToAddress_A(char *a_out, const char *a_src) { unsigned int v_srclen; // esi@1 size_t v_srclen_minus9; // esi@6 unsigned int v_out_idx; // edi@7 調印するd int v_flag; // ebx@7 char *v_ptr; // esi@7 unsigned __int32 v_octet; // eax@12 char v_high_nibble; // [sp+8h] [bp-58h]@0 char v_buf[76]; // [sp+10h] [bp-50h]@7 unsigned int v_cookie; // [sp+5Ch] [bp-4h]@1 char v_dunno[4]; // [sp+60h] [bp+0h]@1 v_cookie = (unsigned int)v_dunno ^ __security_cookie; v_srclen = strlen(a_src); if ( v_srclen > 0x4B ) return 0; if ( a_src[v_srclen - 1] == '.' ) --v_srclen; if ( v_srclen <= 9 || (v_srclen_minus9 = v_srclen - 9, __strnicmp(".ip6.arpa", &a_src[v_srclen_minus9], 9u)) ) return 0; memcpy(v_buf, a_src, v_srclen_minus9); v_out_idx = 0; v_buf[v_srclen_minus9] = 0; v_flag = 0; v_ptr = &v_buf[v_srclen_minus9]; while ( 1 ) { --v_ptr; if ( *v_ptr == '.' ) break; if ( v_ptr == v_buf ) goto LABEL_11; LABEL_20: if ( v_out_idx > 0xF ) return 0; } *v_ptr++ = 0; LABEL_11: if ( *v_ptr == '0' ) { LOBYTE(v_octet) = 0; } else { v_octet = _strtoul(v_ptr, 0, 16); if ( !v_octet || v_octet > 0xF ) return 0; } if ( v_flag ) { a_out[v_out_idx++] = v_octet | 0x10 * v_high_nibble; v_flag = 0; } else { v_high_nibble = v_octet; v_flag = 1; } if ( v_ptr != v_buf ) { --v_ptr; goto LABEL_20; } return 1; }