函数组:V45I

函数组:V45I
函数组说明:读销售单据表
这个函数组包含的函数主要用来读取各类销售单据表,如:VBAK、VBAP、VBEP、VBFA、VBKD、VBPA、VBUK、VBUP 等。

SD_BUFFER_TABLES_REFRESH
SD_KOMV_ARRAY_SELECT
SD_KVBKD_GET_DATA
SD_KVBKD_PUT_DATA
SD_OPEN_DOCUMENTS_CHECK
SD_PARTNER_CHANGED_PUT_DATA
SD_PUSH_ITEM
SD_SALES_DOCUMENT_PREFETCH
SD_SALES_DOCUMENT_PRESELECT
SD_SALES_DOCUMENT_REFRESH
SD_SALES_DOCUMENT_VIEW_1
SD_THEAD_ARRAY_SELECT
SD_V45I_REFRESH
SD_VBAK_ARRAY_READ
SD_VBAK_SELECT
SD_VBAK_SINGLE_READ
SD_VBAK_TRANSFER_TO_BUFFER
SD_VBAP_ARRAY_READ
SD_VBAP_ARRAY_READ_VBELN
SD_VBAP_GET_ACCOUNT_ASSIGNMENT
SD_VBAP_GET_NEXT
SD_VBAP_READ_WITH_OBJNR
SD_VBAP_READ_WITH_VBELN
SD_VBAP_SELECT
SD_VBAP_SELECT_STRUCTURE
SD_VBAP_SINGLE_READ
SD_VBAP_TRANSFER_TO_BUFFER
SD_VBAP_VWPOS_GET
SD_VBEP_ARRAY_READ_VBELN
SD_VBEP_READ_WITH_POSNR
SD_VBEP_READ_WITH_VBELN
SD_VBEP_SELECT
SD_VBEP_SINGLE_READ
SD_VBEP_TRANSFER_TO_BUFFER
SD_VBFA_ARRAY_READ_VBELV
SD_VBFA_READ_WITH_VBELV
SD_VBFA_SELECT
SD_VBFA_SINGLE_READ
SD_VBFA_TRANSFER_TO_BUFFER
SD_VBKD_ARRAY_READ
SD_VBKD_ARRAY_READ_VBELN
SD_VBKD_READ_WITH_VBELN
SD_VBKD_SELECT
SD_VBKD_SINGLE_READ
SD_VBKD_TRANSFER_TO_BUFFER
SD_VBPA_ARRAY_READ_VBELN
SD_VBPA_READ_WITH_VBELN
SD_VBPA_SADR_ARRAY_SELECT
SD_VBPA_SELECT
SD_VBPA_SINGLE_READ
SD_VBPA_TRANSFER_TO_BUFFER
SD_VBUK_ARRAY_READ
SD_VBUK_SELECT
SD_VBUK_SINGLE_READ
SD_VBUK_TRANSFER_TO_BUFFER
SD_VBUP_ARRAY_READ
SD_VBUP_ARRAY_READ_VBELN
SD_VBUP_READ_WITH_VBELN
SD_VBUP_SELECT
SD_VBUP_SINGLE_READ
SD_VBUP_TRANSFER_TO_BUFFER
SD_VBUV_ARRAY_READ_VBELN
SD_VBUV_READ_WITH_VBELN
SD_VBUV_TRANSFER_TO_BUFFER 0 0 0

帮我分析整理这个函数,让我好理解一点 int sub_85B450() { char *v0; // edi int v1; // eax int v2; // ebx signed int v3; // eax int v4; // esi int v5; // eax int v6; // eax int v7; // eax int v8; // esi int v9; // edi int v10; // eax int *v11; // esi int v12; // eax int v13; // esi unsigned int v14; // edx int *v15; // ecx int v16; // esi int v17; // edx _QWORD *v18; // ecx char *v19; // ebx __int16 v20; // cx _WORD *v21; // edi signed int v22; // ebx __int16 v23; // dx __int16 v24; // si __int16 v25; // dx __int16 v26; // si __int16 v27; // dx __int16 v28; // si int v29; // eax int v30; // eax int v31; // esi char *v32; // ebx int v33; // edx int v34; // ebx int v35; // ecx int v36; // eax int *v37; // edi int v38; // eax __int128 v39; // xmm0 _DWORD *v40; // ebx int v41; // esi int v42; // edx int v43; // ecx void *v44; // esi int v45; // eax char *v46; // ebx char *v47; // edx int v48; // ecx int v49; // ecx _DWORD *v50; // eax signed int v51; // edx signed int v52; // esi int v53; // ecx int result; // eax char *v55; // [esp+Ch] [ebp-3ECh] int v56; // [esp+10h] [ebp-3E8h] int v57; // [esp+14h] [ebp-3E4h] int v58; // [esp+18h] [ebp-3E0h] int v59; // [esp+1Ch] [ebp-3DCh] _DWORD *v60; // [esp+20h] [ebp-3D8h] int v61; // [esp+24h] [ebp-3D4h] int v62; // [esp+28h] [ebp-3D0h] char *v63; // [esp+2Ch] [ebp-3CCh] int v64; // [esp+30h] [ebp-3C8h] char *v65; // [esp+34h] [ebp-3C4h] int v66; // [esp+38h] [ebp-3C0h] char v67; // [esp+40h] [ebp-3B8h] char v68; // [esp+390h] [ebp-68h] CHAR Text; // [esp+3D4h] [ebp-24h] if ( dword_15A6774 ) { sub_C0B7E1((LPVOID)dword_15A6774); dword_15A6774 = 0; } sub_C10BE0(&unk_350DDE0, 0, 2195456); sub_C10BE0(&dword_EE2770, 0, 7094272); sub_C10BE0(&unk_2CE07C0, 0, 3035136); sub_C10BE0(&unk_ED88E0, 0, 18432); sub_C10BE0(&unk_1660B80, 0, &unk_167FC40); if ( dword_350DD9C != dword_350DDA0 ) { sub_86E680(dword_350DD9C); dword_350DDA0 = dword_350DD9C; } sub_C10BE0(&unk_EC0780, 0, 96); sub_C10BE0(&dword_15A6780, 0, 761856); sub_C10BE0(&dword_EC07E0, 0, 98304); v0 = 0; v63 = 0; v1 = sub_C1D5A6((int)"YBi.cfg", (int)"rb"); v2 = v1; v57 = 0; v64 = 0; if ( v1 ) { sub_C1D88C((int)&v57, 4, 1, v1); sub_C1D88C((int)&v64, 4, 1, v2); v3 = v64; dword_EC0774 = v64; if ( v64 != 151001 ) { sub_717CC0(&Text, 30, "CfgVer:%d SysVer:%d", v64); MessageBoxA(0, &Text, "Error", 0); PostMessageA(hWnd, 0x12u, 0, 0); v3 = v64; } if ( v3 >= 120000 ) { v4 = sub_C1E674(v2); sub_C1D88C((int)&v66, 852, 1, v2); sub_8661C0(0); v5 = strcmp(&v67, WindowName); if ( v5 ) v5 = -(v5 < 0) | 1; if ( v5 ) { dword_1660B74 = 0x2000; sub_C1DDBA(v2, v4, 0); v6 = dword_1660B74; } else { v6 = v66; dword_1660B74 = v66; } v7 = sub_C0B7CA(852 * v6 | -(852 * (unsigned __int64)(unsigned int)v6 >> 32 != 0)); v8 = dword_1660B74; v9 = 852 * dword_1660B74; dword_15A6774 = v7; sub_C10BE0(v7, 0, 852 * dword_1660B74); dword_EE2764 = v8 - 1; v63 = (char *)sub_C0B7CA(v9 + 64); v0 = v63; sub_C1D88C((int)v63, 852, dword_1660B74, v2); sub_C1D88C((int)&v0[852 * dword_1660B74], 64, 1, v2); } else { MessageBoxA(0, "Ybi.cfg file Error3", "Error2", 0); PostMessageA(hWnd, 0x12u, 0, 0); } sub_C1D88C((int)&dword_EE2770, 6928, 1024, v2); sub_C1D88C((int)&unk_2CE07C0, 2964, 1024, v2); v10 = 256; if ( v64 < 150200 ) v10 = 128; sub_C1D88C((int)&unk_ED88E0, 72, v10, v2); sub_C1D88C((int)&unk_1660B80, 7864, 3000, v2); sub_C1D88C((int)&unk_EC0780, 16, 6, v2); sub_C1DDBA(v2, 1056768, 1); if ( v64 < 151000 ) { v11 = &dword_15A6780; do { sub_C1D88C((int)v11, 104, 1, v2); v11 += 186; } while ( (signed int)v11 < (signed int)&word_1660780 ); } else { sub_C1D88C((int)&dword_15A6780, 744, 1024, v2); } sub_C1D88C((int)&dword_EC07E0, 96, 1024, v2); sub_C1E805(v2); } v12 = sub_C1D5A6((int)"YBdrop.cfg", (int)"rb"); v13 = v12; if ( v12 ) { sub_C1D88C((int)&unk_350DDE0, 268, 0x2000, v12); sub_C1E805(v13); } v14 = 0; do { byte_ED87E0[v14] = (v14 >> 4) & 1 | (v14 >> 2) & 0x18 | (v14 >> 1) & 0x40 | 2 * (v14 & 3 | 4 * (v14 & 4 | 2 * (v14 & 0xF8))); ++v14; } while ( (signed int)v14 < 256 ); v15 = &dword_E331E8; if ( (unsigned int)dword_E331FC > 0xF ) v15 = (int *)dword_E331E8; if ( !(unsigned __int8)sub_85BF00(v15) ) MessageBoxA(0, "Can't read Ybq.cfg file.", "WARNING", 0); sub_C10BE0(&v68, 0, 64); sub_8661C0(0); sub_8661C0(0); sub_8661C0(0); LOBYTE(v65) = 0; sub_8661C0(0); sub_8661C0(0); sub_8661C0(0); sub_8661C0(0); sub_8661C0(0); sub_8661C0(0); if ( v64 == 151001 ) { v16 = 852 * dword_1660B74; sub_C10660(dword_15A6774, v0, 852 * dword_1660B74); sub_C1CCB0(&v68, &v0[v16], 64); } v17 = 0; if ( dword_1660B74 > 0 ) { v18 = (_QWORD *)dword_15A6774; do { if ( !*v18 ) break; ++v17; v18 = (_QWORD *)((char *)v18 + 852); } while ( v17 < dword_1660B74 ); } v19 = (char *)&unk_EE2ABE; dword_15A6770 = v17; v20 = 0; v65 = (char *)&unk_EE2ABE; do { v21 = v19; v22 = 4; do { v21 += 824; v23 = *(v21 - 1030); if ( v20 >= *(v21 - 1030) ) v23 = v20; v24 = *(v21 - 824); if ( v23 >= *(v21 - 824) ) v24 = v23; v25 = v24; v26 = *(v21 - 618); if ( v25 >= *(v21 - 618) ) v26 = v25; v27 = v26; v28 = *(v21 - 412); if ( v27 >= *(v21 - 412) ) v28 = v27; v20 = v28; --v22; } while ( v22 ); v19 = v65 + 6928; v65 = v19; } while ( (signed int)v19 < (signed int)&unk_15A6ABE ); dword_2FC57D0 = v28; if ( v63 ) sub_C0B7E1(v63); v29 = strcmp(&v68, "dfficvvifvdfher89429338jwesjcnasidneufhrfdfha23p3rwe23323ncdnhj"); if ( v29 ) v29 = -(v29 < 0) | 1; if ( v29 ) { MessageBoxA(0, "Ybi.cfg Global Code Error1", "Error", 0); PostMessageA(hWnd, 0x12u, 0, 0); } v30 = sub_C1D5A6((int)"SetItem.cfg", (int)"rb"); v31 = v30; v56 = v30; if ( v30 ) { sub_C1D88C((int)&dword_EC076C, 4, 1, v30); sub_C1D88C((int)&dword_EC0770, 4, 1, v31); if ( dword_EC076C < 1 || dword_EC0770 < 1 ) { MessageBoxA(0, "SetItem.cfg Not found count", "Warning", 0); sub_C1E805(v31); } else { v32 = (char *)sub_C0B7CA(3828 * dword_EC076C | -(3828 * (unsigned __int64)(unsigned int)dword_EC076C >> 32 != 0)); v55 = v32; dword_2FC57DC = sub_C0B7CA(5108 * dword_EC076C | -(5108 * (unsigned __int64)(unsigned int)dword_EC076C >> 32 != 0)); dword_2FC57D8 = sub_C0B7CA(68 * dword_EC0770 | -(68 * (unsigned __int64)(unsigned int)dword_EC0770 >> 32 != 0)); sub_C1D88C((int)v32, 3828, dword_EC076C, v31); sub_C1D88C(dword_2FC57D8, 68, dword_EC0770, v31); sub_8661C0(0); sub_8661C0(0); v59 = 0; if ( dword_EC076C > 0 ) { v33 = 0; v34 = (int)(v32 + 232); v65 = 0; v58 = v34; do { v35 = dword_2FC57DC; v36 = *(_DWORD *)(v34 - 232); v37 = (int *)v34; v63 = 0; v62 = v33; *(_DWORD *)(dword_2FC57DC + v33) = v36; v38 = v33; *(_OWORD *)(v35 + v33 + 4) = *(_OWORD *)(v34 - 228); *(_OWORD *)(v35 + v33 + 20) = *(_OWORD *)(v34 - 212); *(_OWORD *)(v35 + v33 + 36) = *(_OWORD *)(v34 - 196); v39 = *(_OWORD *)(v34 - 180); v40 = (_DWORD *)(v34 - 164); v60 = v40; *(_OWORD *)(v35 + v33 + 52) = v39; do { v41 = dword_2FC57DC; v42 = *v40; v43 = v40[1]; *(_DWORD *)(v38 + dword_2FC57DC + 68) = *v40; *(_DWORD *)(v38 + v41 + 72) = v43; *(_DWORD *)(v38 + v41 + 76) = 0; v44 = v63; if ( *(_QWORD *)v40 ) { v45 = sub_5BD880(v42, v43); *(_DWORD *)(v62 + dword_2FC57DC + 76) = v45; } v61 = 15; v46 = &v65[(_DWORD)v44 + dword_2FC57DC + 316]; v47 = &v65[(_DWORD)v44 + dword_2FC57DC + 316]; do { *((_DWORD *)v47 - 1) = *(v37 - 1); v48 = *v37; *(_DWORD *)v47 = *v37; *((_DWORD *)v47 + 1) = v37[1]; *((_DWORD *)v47 - 2) = 0; if ( v48 ) { v49 = 0; v50 = &unk_2CE07C0; while ( *(_DWORD *)v46 != *v50 ) { v50 += 741; ++v49; if ( (signed int)v50 >= (signed int)&dword_2FC57C0 ) goto LABEL_70; } *((_DWORD *)v47 - 2) = v49; } LABEL_70: v37 += 3; v46 += 16; v47 += 16; --v61; } while ( v61 ); v40 = v60 + 2; v38 = v62 + 12; v60 += 2; v62 += 12; v63 += 240; } while ( (signed int)v63 < 4800 ); v33 = (int)(v65 + 5108); v34 = v58 + 3828; ++v59; v65 += 5108; v58 += 3828; } while ( v59 < dword_EC076C ); v31 = v56; v32 = v55; } sub_C0B7E1(v32); sub_C1E805(v31); } } else { MessageBoxA(0, "SetItem.cfg Not found", "Warning", 0); } sub_A7DF20(); v51 = 0; do { v52 = 0; do { while ( !v52 ) { v52 = 1; word_2FD24A0[v51] = word_D7AA30[v51]; word_2FD22C0[v51] = word_D7A850[v51]; word_2FD2860[v51] = word_D7A670[v51]; } v53 = v52++ + v51; word_2FD24A0[v53] = word_2FD249E[v53] + word_D7AA30[v53]; word_2FD22C0[v53] = word_2FD22BE[v53] + word_D7A850[v53]; result = (unsigned __int16)word_D7A670[v53]; LOWORD(result) = word_2FD285E[v53] + result; word_2FD2860[v53] = result; } while ( v52 < 20 ); v51 += 20; } while ( v51 < 240 ); return result; }
07-14
//ybi文件内容解密码 const unsigned char encode[] = { 18, 29, 7, 25, 15, 31, 22, 27, 9, 26, 3, 13, 19, 14, 20, 11, 5, 2, 23, 16, 10, 24, 28, 17, 6, 30, 0, 21, 12, 8, 4, 1 }; //ybi文件内容加密码 const unsigned char encryption[] = { 26, 31, 17, 10, 30, 16, 24, 2, 29, 8, 20, 15, 28, 11, 13, 4, 19, 23, 0, 12, 14, 27, 6, 18, 21, 3, 9, 7, 22, 1, 25, 5 }; int YbiDecrypt(unsigned int a1, bool a2)//加密或解密内容, a2=false解密 a2=true加密 { unsigned int v2; // esi int v3; // edi int result; // eax unsigned int v5; // edx unsigned int v6; // ecx int v7; // edx int v8; // ecx /* int v9; // [esp+Ch] [ebp-104h] int v10; // [esp+10h] [ebp-100h] int v11; // [esp+14h] [ebp-FCh] int v12; // [esp+18h] [ebp-F8h] int v13; // [esp+1Ch] [ebp-F4h] int v14; // [esp+20h] [ebp-F0h] int v15; // [esp+24h] [ebp-ECh] int v16; // [esp+28h] [ebp-E8h] int v17; // [esp+2Ch] [ebp-E4h] int v18; // [esp+30h] [ebp-E0h] int v19; // [esp+34h] [ebp-DCh] int v20; // [esp+38h] [ebp-D8h] int v21; // [esp+3Ch] [ebp-D4h] int v22; // [esp+40h] [ebp-D0h] int v23; // [esp+44h] [ebp-CCh] int v24; // [esp+48h] [ebp-C8h] int v25; // [esp+4Ch] [ebp-C4h] int v26; // [esp+50h] [ebp-C0h] int v27; // [esp+54h] [ebp-BCh] int v28; // [esp+58h] [ebp-B8h] int v29; // [esp+5Ch] [ebp-B4h] int v30; // [esp+60h] [ebp-B0h] int v31; // [esp+64h] [ebp-ACh] int v32; // [esp+68h] [ebp-A8h] int v33; // [esp+6Ch] [ebp-A4h] int v34; // [esp+70h] [ebp-A0h] int v35; // [esp+74h] [ebp-9Ch] int v36; // [esp+78h] [ebp-98h] int v37; // [esp+7Ch] [ebp-94h] int v38; // [esp+80h] [ebp-90h] int v39; // [esp+84h] [ebp-8Ch] int i; // [esp+88h] [ebp-88h]注意这个i 在for(int =1..)即V40=1 */ /* int v41; // [esp+8Ch] [ebp-84h] int v42; // [esp+90h] [ebp-80h] int v43; // [esp+94h] [ebp-7Ch] int v44; // [esp+98h] [ebp-78h] int v45; // [esp+9Ch] [ebp-74h] int v46; // [esp+A0h] [ebp-70h] int v47; // [esp+A4h] [ebp-6Ch] int v48; // [esp+A8h] [ebp-68h] int v49; // [esp+ACh] [ebp-64h] int v50; // [esp+B0h] [ebp-60h] int v51; // [esp+B4h] [ebp-5Ch] int v52; // [esp+B8h] [ebp-58h] int v53; // [esp+BCh] [ebp-54h] int v54; // [esp+C0h] [ebp-50h] int v55; // [esp+C4h] [ebp-4Ch] int v56; // [esp+C8h] [ebp-48h] int v57; // [esp+CCh] [ebp-44h] int v58; // [esp+D0h] [ebp-40h] int v59; // [esp+D4h] [ebp-3Ch] int v60; // [esp+D8h] [ebp-38h] int v61; // [esp+DCh] [ebp-34h] int v62; // [esp+E0h] [ebp-30h] int v63; // [esp+E4h] [ebp-2Ch] int v64; // [esp+E8h] [ebp-28h] int v65; // [esp+ECh] [ebp-24h] int v66; // [esp+F0h] [ebp-20h] int v67; // [esp+F4h] [ebp-1Ch] int v68; // [esp+F8h] [ebp-18h] int v69; // [esp+FCh] [ebp-14h] int v70; // [esp+100h] [ebp-10h] int v71; // [esp+104h] [ebp-Ch] int v72; // [esp+108h] [ebp-8h] */ /* v41 = 26; v42 = 31; v43 = 17; v44 = 10; v45 = 30; v46 = 16; v47 = 24; v48 = 2; v49 = 29; v50 = 8; v51 = 20; v52 = 15; v53 = 28; v54 = 11; v55 = 13; v56 = 4; v57 = 19; v58 = 23; v59 = 0; v60 = 12; v61 = 14; v62 = 27; v63 = 6; v64 = 18; v65 = 21; v66 = 3; v67 = 9; v68 = 7; v69 = 22; v70 = 1; v71 = 25; v72 = 5; */ /* v9 = 18; v10 = 29; v11 = 7; v12 = 25; v13 = 15; v14 = 31; v15 = 22; v16 = 27; v17 = 9; v18 = 26; v19 = 3; v20 = 13; v21 = 19; v22 = 14; v23 = 20; v24 = 11; v25 = 5; v26 = 2; v27 = 23; v28 = 16; v29 = 10; v30 = 24; v31 = 28; v32 = 17; v33 = 6; v34 = 30; v35 = 0; v36 = 21; v37 = 12; v38 = 8; v39 = 4; i = 1;即v40=1; */ v2 = a1; //v3 = 0; result = 0; for (/*i = 1*/v3 = 0; v2; /*v3 += 4*/v3++) { v5 = v2; v6 = v2 & 0xFFFFFFFE; v2 >>= 1; v7 = v5 - v6; if (v7) { if (a2) //v8 = *(int*)((char*)&v41 + v3); v8 = *(int*)(encryption + v3); else //v8 = *(int*)((char*)&v9 + v3); v8 = *(int*)(encode+ v3); result += v7 << v8; } } return result; }这是旧版本的ybi.cfg加解密过程,也就是说之前和你一起分析的新版过程是一样的吗
最新发布
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值