cpd
来源:互联网 发布:推荐几本好书 知乎 编辑:程序博客网 时间:2024/06/01 16:05
作者微信:15013593099 欢迎交流
// ygdpDlg.cpp : implementation file
//#include "stdafx.h"
#include "ygdp.h"
#include "ygdpDlg.h"
#include <windowsx.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
int ecxthis[]={
// 03335F00 6C8B849C dChkData.6C8B849C
// 03335F04 .\.P.r.o.g.r.a.m. .F.i.l.e.s. .(.x.8.6.).\.C.o.o.l.p.a.d.D.o.w.n.l.o.a.d. .A.s.s.i.s.t.a.n.t..
// 03335F68 00000000
// 03335F6C 00000000
// 03335F70 00000000
// 03335F74 00000000
// 03335F78 00000000
// 03335F7C 00000000
// 03335F80 00000000
// 03335F84 00000000
// 03335F88 00000000
// 03335F8C 00000000
// 03335F90 00000000
// 03335F94 00000000
// 03335F98 00000000
// 03335F9C 00000000
// 03335FA0 00000000
// 03335FA4 00000000
// 03335FA8 00000000
// 03335FAC 00000000
// 03335FB0 00000000
// 03335FB4 00000000
// 03335FB8 00000000
// 03335FBC 00000000
// 03335FC0 00000000
// 03335FC4 00000000
// 03335FC8 00000000
// 03335FCC 00000000
// 03335FD0 00000000
// 03335FD4 00000000
// 03335FD8 00000000
// 03335FDC 00000000
// 03335FE0 00000004
// 03335FE4 0000EF17
// 03335FE8 03330090
// 03335FEC 03330090
// 03335FF0 03330038
// 03335FF4 03330038
// 03335FF8 03336000
// 03335FFC 0000A000
// 03336000 00000000
// 03336004 00000000
// 03336008 00000000
// 0333600C 00000000
// 03336010 00000000
// 03336014 00000000
// 03336018 00000000
// 0333601C 00000000
// 03336020 00000000
// 03336024 00000000
// 03336028 00000000
// 0333602C 00000000
// 03336030 00000000
// 03336034 00000000
// 03336038 00000000
// 0333603C 00000000
// 03336040 00000000
// 03336044 00000000
// 03336048 00000000
// 0333604C 00000000
// 03336050 00000000
// 03336054 00000000
// 03336058 00000000
// 0333605C 00000000
// 03336060 00000000
// 03336064 00000000
// 03336068 00000000
// 0333606C 00000000
// 03336070 00000000
// 03336074 00000000
// 03336078 00000000
// 0333607C 00000000
// 03336080 00000000
// 03336084 00000000
// 03336088 00000000
// 0333608C 00000000
// 03336090 00000000
// 03336094 00000000
// 03336098 00000000
// 0333609C 00000000
// 033360A0 00000000
// 033360A4 00000000
// 033360A8 00000000
// 033360AC 00000000
// 033360B0 00000000
// 033360B4 00000000
// 033360B8 00000000
// 033360BC 00000000
// 033360C0 00000000
// 033360C4 00000000
// 033360C8 00000000
// 033360CC 00000000
// 033360D0 00000000
// 033360D4 00000000
// 033360D8 00000000
// 033360DC 00000000
// 033360E0 00000000
// 033360E4 00000000
// 033360E8 00000000
// 033360EC 00000000
// 033360F0 00000000
// 033360F4 00000000
// 033360F8 00000000
// 033360FC 00000000
// 03336100 00000000
// 03336104 6C8B84C0 dChkData.6C8B84C0
// 03336108 6C8B84C8 dChkData.6C8B84C8
// 0333610C 6C8C0520 dChkData.6C8C0520
// 03336110 00000001
// 03336114 00000000
// 03336118 00000000
// 0333611C 00000000
// 03336120 00000000
// 03336124 00000000
// 03336128 00000000
// 0333612C 00000000
// 03336130 033313B0
// 03336134 00000000
// 03336138 00000000
// 0333613C 00000000
// 03336140 00000000
// 03336144 00000000
// 03336148 033313C0
// 0333614C 00000000
// 03336150 00000000
// 03336154 00000000
// 03336158 00000000
// 0333615C 00000000
// 03336160 6C8C0520 dChkData.6C8C0520
// 03336164 6C8C0520 dChkData.6C8C0520
// 03336168(616) 033362B8 UNICODE "D:\cpd\4.4.038.P1.141023.8297_C00.CPB"
// 0333616C 6C8C0520 dChkData.6C8C0520
// 03336170 (624)033313E0 UNICODE "8297_C00"
// 03336174 00000001
// 03336178 00000001
// 0333617C 00000000
// 03336180 00000000
// 03336184 00000000
// 03336188 00000000
// 0333618C 00000001
// 03336190 00000001
// 03336194 00000000
// 03336198 002546E0 Coolpad_.002546E0
// 0333619C 00000000
// 033361A0 00000000
// 033361A4(676) 00000000
// 033361A8 00000000
// 033361AC 00000000
// 033361B0 00000000
// 033361B4 00000000
// 033361B8 00000000
// 033361BC 00000000
// 033361C0 00000000
// 033361C4 00000000
// 033361C8 00000000
// 033361CC 00000000
// 033361D0 00000000
// 033361D4 00000000
// 033361D8 00000000
// 033361DC 00000000
// 033361E0 00000000
// 033361E4 00000000
// 033361E8 00000000
// 033361EC 00000000
// 033361F0 00000000
// 033361F4 00000000
// 033361F8 00000000
// 033361FC 00000000
// 03336200 00000000
// 03336204 00000000
// 03336208 00000000
// 0333620C 00000000
// 03336210 00000000
// 03336214 00000000
// 03336218 00000000
// 0333621C 00000000
// 03336220 00000000
// 03336224 6C8B0E48 dChkData.6C8B0E48
// 03336228 00000000
// 0333622C 00000000
// 03336230 00000000
// 03336234 00000000
// 03336238 00000000
// 0333623C 00000000
// 03336240 00000000
// 03336244 00000000
// 03336248 00000000
// 0333624C 00000000
// 03336250 00000000
// 03336254 00000000
// 03336258 00000000
// 0333625C 00000000
// 03336260 00000000
// 03336264 00000000
// 03336268 00000000
// 0333626C 00000000
// 03336270 00000000
// 03336274 00000000
// 03336278 00000000
// 0333627C 00000000
// 03336280 00000000
// 03336284 00000000
// 03336288 00000000
// 0333628C 00000000
// 03336290 00000000
// 03336294 00000000
// 03336298 00000000
// 0333629C 00000000
// 033362A0 42D2D3CC
// 033362A4 0C00EF7F
// 033362A8 6C8C050C dChkData.6C8C050C
// 033362AC 00000025
// 033362B0 00000025
// 033362B4 00000001
// 033362B8 003A0044
// 033362BC 0063005C
// 033362C0 00640070
// 033362C4 0034005C
// 033362C8 0034002E
// 033362CC 0030002E
// 033362D0 00380033
// 033362D4 0050002E
// 033362D8 002E0031
// 033362DC 00340031
// 033362E0 00300031
// 033362E4 00330032
// 033362E8 0038002E
// 033362EC 00390032
// 033362F0 005F0037
// 033362F4 00300043
// 033362F8 002E0030
// 033362FC 00500043
// 03336300 00000042
// 03336304 00000000
// 03336308 D4D3D25A
// 0333630C 0000EF07
// 03336310 033300C4
// 03336314 033313A0
// 03336318 3030435F
// 0333631C 00000000
// 03336320 00000000
// 03336324 00000000
// 03336328 00000000
// 0333632C 00000000
// 03336330 00000000
// 03336334 2E342E34
// 03336338 2E383330
// 0333633C 312E3150
// 03336340 32303134
// 03336344 32382E33
// 03336348 435F3739
// 0333634C 00003030
// 03336350 00000000
// 03336354 00000000
// 03336358 00000000
// 0333635C 00000000
// 03336360 00000000
// 03336364 00000000
// 03336368 00000000
// 0333636C 00000000
// 03336370 00000000
// 03336374 3E19634D
// 03336378 0D5C0241
// 0333637C 1F3C451C
// 03336380 06610D2A
// 03336384 035B233E
// 03336388 03273B5B
// 0333638C 0E62360B
// 03336390 0B143722
// 03336394 13192D36
// 03336398 50541100
// 0333639C 510B6027
// 033363A0 4C27083D
// 033363A4 224F1E2B
// 033363A8 345A4659
// 033363AC 3A135818
// 033363B0 3115275F
// 033363B4 24142E24
// 033363B8 37453810
// 033363BC 42585005
// 033363C0 542A1C59
// 033363C4 49000000
// 033363C8 A8FE9448
// 033363CC 156EF0A4
// 033363D0 5788F47F
// 033363D4 5FC42AA2
// 033363D8 12AC8CFA
// 033363DC 7B757513
// 033363E0 9E444ECD
// 033363E4 B8266C2D
// 033363E8 DE7FE366
// 033363EC 1C0D2E01
// 033363F0 CE639FFE
// 033363F4 31ADAC80
// 033363F8 36EA641C
// 033363FC F365781A
// 03336400 E3F1CA6F
// 03336404 F038EC5E
// 03336408 ED4415E1
// 0333640C D042E6AC
0
};
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CYgdpDlg dialog
CYgdpDlg::CYgdpDlg(CWnd* pParent /*=NULL*/)
: CDialog(CYgdpDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CYgdpDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CYgdpDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CYgdpDlg)
DDX_Control(pDX, IDC_LIST1, m_list);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CYgdpDlg, CDialog)
//{{AFX_MSG_MAP(CYgdpDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1startexe, OnBUTTON1startexe)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CYgdpDlg message handlers
CYgdpDlg* pCYgdpDlg=0;
BOOL CYgdpDlg::OnInitDialog()
{
CDialog::OnInitDialog();
pCYgdpDlg = this;
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
SetDlgItemText(IDC_EDIT1,"C:\\YLXZGJ\\YGDP2\\YGDP_Assembly.exe");
return TRUE; // return TRUE unless you set the focus to a control
}
void CYgdpDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CYgdpDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CYgdpDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
char* getfile(const char* ext)
{
//CFileDialog cf(TRUE);
CFileDialog cf(TRUE,
"exe Files (*exe)",
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,
_T("exe Files (*.exe)|*.exe;)||"),
NULL);
int ok =cf.DoModal();
if(ok==IDOK){
CString cs;
cs=cf.GetPathName();
int len = cs.GetLength();
char* cc=new char[len+1];
strcpy(cc,cs);
return cc;
}
return 0;
}
int get_syslistviews_lines( HWND hwndsyslistviews)
{
int count = (int)::SendMessage(hwndsyslistviews,LVM_GETITEMCOUNT,0,0);
return count;
}
void ListGetText(HWND hWnd, int row, int col, char* pSave, int sz)
{
const int local_BUF_SIZE = 1024;
DWORD dwProcess;
HANDLE hProcess;
char buf[local_BUF_SIZE];
LVITEM* pItem = (LVITEM*)buf;
pSave[0] = '\0';
GetWindowThreadProcessId(hWnd, &dwProcess);
// 申请内存
hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwProcess);
LPLVITEM pTemp = (LPLVITEM)VirtualAllocEx(hProcess, 0, local_BUF_SIZE, MEM_COMMIT, PAGE_READWRITE);
memset(pItem, 0, local_BUF_SIZE);
pItem->pszText = (char*)((char*)pTemp + sizeof(LVITEM));
pItem->cchTextMax = local_BUF_SIZE - sizeof(LVITEM);
pItem->iSubItem = col; //列
pItem->mask = LVIF_TEXT;
DWORD dWord = 0;
WriteProcessMemory(hProcess, pTemp, pItem, local_BUF_SIZE, &dWord);
int nChar = SendMessage(hWnd,
LVM_GETITEMTEXT,
(WPARAM)row, //行
(LPARAM)pTemp);
// printf("ListGetText read char count : %d\n", nChar);
// 读数据
ReadProcessMemory(hProcess, (char*)pTemp+ sizeof(LVITEM), pItem, nChar, &dWord);
//pItem->pszText = (char*)((char*)pItem + sizeof(LVITEM));
// 释放内存
VirtualFreeEx(hProcess, pTemp, local_BUF_SIZE, MEM_RELEASE);
CloseHandle(hProcess);
sprintf(pSave, "%s", (char*)pItem);
}
int notify_brush(int id,int type,int progress,const char*text)
{
CString csProgress;
csProgress.Format("id=%d type=%d progress=%d: %s",id,type,progress,text);
if(pCYgdpDlg){
pCYgdpDlg->add(csProgress);
}
return 0;
}
int __stdcall startbrush(int notify,const char* cpb,const char* cpdlib,const char* phonetype)
{
typedef int (__stdcall* startbrush_t)(int notify,const char* cpb,const char* cpdlib,const char* phonetype);
HMODULE hmod=LoadLibrary("ygdpflash.dll");
startbrush_t startbrushf=(startbrush_t)GetProcAddress(hmod,"startbrush");
return startbrushf(notify,cpb,cpdlib,phonetype);
}
int __stdcall terminatebrush(int reserved)
{
typedef int (__stdcall* terminatebrush_t)(int reserved);
HMODULE hmod=LoadLibrary("ygdpflash.dll");
terminatebrush_t terminatebrushf=(terminatebrush_t)GetProcAddress(hmod,"terminatebrush");
return terminatebrushf(reserved);
}
int DebugBreakProcess(HANDLE processhandle)
{
typedef BOOL (WINAPI *DebugBreakProcess_t)( HANDLE Process);
DebugBreakProcess_t DebugBreakProcess_1=(DebugBreakProcess_t)GetProcAddress(GetModuleHandle("Kernel32.dll"),"DebugBreakProcess");
return DebugBreakProcess_1(processhandle);
}
int DebugActiveProcessStop(int pid)
{
typedef BOOL (WINAPI* DebugActiveProcessStop_t)( DWORD dwProcessId);
DebugActiveProcessStop_t DebugActiveProcessStop_1=(DebugActiveProcessStop_t)GetProcAddress(GetModuleHandle("Kernel32.dll"),"DebugActiveProcessStop");
return DebugActiveProcessStop_1(pid);
}
HANDLE processhandledebug = 0;
void delpid(int pid)
{
HANDLE hproc = OpenProcess(PROCESS_TERMINATE,0,pid);
if(hproc==0){
return ;
}
int times = 0;
while(!TerminateProcess(hproc,0)){
times++;
Sleep(100);
if(times>10){
break;
}
}
CloseHandle(hproc);
}
DWORD debugthread(int pid,HANDLE processhandle)
{
DEBUG_EVENT debugevent={0};
int firstchance = 0;
while(1){
if(!WaitForDebugEvent(&debugevent,-1)) continue;
//afxmain()->m_debug.suspendthreadall(pid);// debugout("EXCEPTION_SINGLE_STEP");
switch(debugevent.dwDebugEventCode)
{
case CREATE_PROCESS_DEBUG_EVENT:
processhandledebug = debugevent.u.CreateProcessInfo.hProcess;
break;
case CREATE_THREAD_DEBUG_EVENT:
break;
case LOAD_DLL_DEBUG_EVENT:
//debugout("LOAD_DLL_DEBUG_EVENT",debugevent.dwThreadId,debugevent.u.CreateThread.hThread);
break;
case UNLOAD_DLL_DEBUG_EVENT:
break;
case OUTPUT_DEBUG_STRING_EVENT:
break;
case EXIT_PROCESS_DEBUG_EVENT:
break;
case EXCEPTION_DEBUG_EVENT:
switch(debugevent.u.Exception.ExceptionRecord.ExceptionCode)
{
case EXCEPTION_BREAKPOINT:
if(firstchance==0) {
firstchance=1;//firstchance++;
break;
}else{
int a = DebugActiveProcessStop(debugevent.dwProcessId);
delpid(debugevent.dwProcessId);
break;
}
break;
case EXCEPTION_SINGLE_STEP:
break;
case EXCEPTION_ACCESS_VIOLATION:
{
}
break;
default:
break;
}
break;
default:
break;
}
//afxmain()->m_debug.restorallthread(pid);
ContinueDebugEvent(debugevent.dwProcessId,debugevent.dwThreadId,DBG_CONTINUE);
}
// ResumeThread(pi.hThread);
// CloseHandle ( pi.hProcess );
// CloseHandle ( pi.hThread );
return true;
}
DWORD __stdcall runCmdByThread(PVOID cmdstring)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si,0,sizeof(STARTUPINFOA));
GetStartupInfo(&si);
si.cb = sizeof(STARTUPINFO);
si.wShowWindow = SW_SHOW;
si.dwFlags = STARTF_USESHOWWINDOW;
DWORD dwcreateflags = DEBUG_PROCESS;
BOOL bRet = ::CreateProcess (
NULL,
(char*)cmdstring, //在Unicode版本中此参数不能为常量字符串,因为此参数会被修改
NULL,
NULL,
TRUE,
dwcreateflags,
NULL,
NULL,
&si,
&pi);
if(!bRet)
{
// OutputDebugStr("error on CreateProcess(%s) %s %d",cmdstring,__FILE__,__LINE__);
return false;
}
//ResumeThread(pi.hThread);
debugthread(pi.dwProcessId,pi.hProcess);
// CloseHandle ( pi.hProcess );
// CloseHandle ( pi.hThread );
return true;
}
void CYgdpDlg::OnBUTTON1startexe()
{
// TODO: Add your control notification handler code here
// HWND mainhwnd = ::FindWindowEx(0,0,"#32770","YGDP");
// if(mainhwnd==0){
// AfxMessageBox("ERROR FIND DIALOG YGDP");
// return ;
// }
// HWND login = ::FindWindowEx(mainhwnd,0,"Button","Login");
// HWND edit = ::FindWindowEx(mainhwnd,0,"Edit",0);
//
// if(login==0||edit==0){
// AfxMessageBox("ERROR FIND login or edit");
// return ;
// }
//
// ::SendMessage(edit,WM_SETTEXT,0,(long)"369");
//
// ::SendMessage(login,BM_CLICK,0,0);
CString path;
GetDlgItemText(IDC_EDIT1,path);
// if(!runcmd_simple(path)){
// CString cs;
// cs.Format("error runcmd_simple(%s)",path);
// AfxMessageBox(cs);
// }
//startbrush((int)notify_brush,"D:\\cpd\\8085q\\0\\cpd0.cpb","C:\\YLXZGJ\\YGDP","8085q1");
}
int CYgdpDlg::add(const char *text)
{
m_list.AddString(text);
return 0;
}
int __stdcall pe_dll()
{
typedef int (__stdcall* pe_dll_t)(const char* pe,const char* dll,const char* fn);
HMODULE hmod = LoadLibrary("cry_mfc.dll");
pe_dll_t pedll=(pe_dll_t)GetProcAddress(hmod,"pe_dll");
return pedll("C:\\YLXZGJ\\YGDP\\YGDP_Assembly.exe","dhookdown.dll","terminatebrush");
}
void CYgdpDlg::OnButton1()
{
// TODO: Add your control notification handler code here
add("pedll");
pe_dll();
add("finishpedll");
}
bool runcmd_simple(const char *cmdstring);
void CYgdpDlg::OnButton2()
{
// TODO: Add your control notification handler code here
// runcmd_simple("D:\\lgj\\SP_Flash_Tool_v5.1348.00mobile\\flash_tool.exe");
}
int runasadmin(const char* pe)
{
//[HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/Layers]
//"C://Program Files//win7test2.exe"="RUNASADMIN"
HKEY hkey;
long ret0=::RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\\",0,KEY_READ|KEY_WRITE,&hkey);
if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行
{
//AfxMessageBox("错误:无法打开有关的hKEY");
return 0;
}
//查询有关的数据
LPBYTE owner_Get=new BYTE[80];//定义用户姓名 owner_Get
DWORD type_1=REG_SZ;//定义数据类型
DWORD cbData_1=80;//定义数据长度
long ret1=::RegSetValueEx(hkey,/*"D:\\miflash\\Debug\\mifalsh.exe"*/pe,NULL,REG_SZ,(BYTE*)"RUNASADMIN",strlen("RUNASADMIN")+1);
if(ret1!=ERROR_SUCCESS)
{
//AfxMessageBox("错误:无法设置有关的注册表信息");
return 0;
}
::RegCloseKey(hkey);
return 1;
}
int setcoopinstallpath(const char* path)
{
//修改注册表,开机启动
int return_value=0;
HKEY hroot = HKEY_CURRENT_USER,hkey;
const char *subkey = "Software\\Yulong\\YGDP\\3.83_Beta";
DWORD dwDisposition;
long result=RegCreateKeyEx(
hroot,
subkey,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hkey,
&dwDisposition
);
if(result==ERROR_SUCCESS)
{
result=RegSetValueEx(
hkey,
"Environment",
0,
REG_SZ,
(CONST BYTE *)"Assembly",
(DWORD)strlen("Assembly")
);
if(result!=ERROR_SUCCESS){
return_value=-1;
}
result=RegSetValueEx(
hkey,
"ProgramPath",
0,
REG_SZ,
(CONST BYTE *)path,
(DWORD)strlen(path)
);
if(result!=ERROR_SUCCESS){
return_value=-1;
}
RegCloseKey(hkey);
}else{
return_value=-1;
}
return 1;
}
void CYgdpDlg::OnButton3()
{
// TODO: Add your control notification handler code here
CString path;
GetDlgItemText(IDC_EDIT1,path);
runasadmin(path);
}
void CYgdpDlg::OnButton4()
{
// TODO: Add your control notification handler code here
CString path;
GetDlgItemText(IDC_EDIT1,path);
char* ptr,*ptr2;
ptr=(char*)(const char*)path;
ptr2 = strrchr(ptr,'\\');
ptr2[0]=0;
setcoopinstallpath(ptr);
}
void CYgdpDlg::OnButton5()
{
// TODO: Add your control notification handler code here
char* ptr=getfile(0);
SetDlgItemText(IDC_EDIT1,ptr);
delete ptr;
}
int risepri()
{
BOOL rc;
HANDLE hToken;
TOKEN_PRIVILEGES *pTokenPriv;
LUID_AND_ATTRIBUTES la;
DWORD Len;
rc=OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken);
if(rc==FALSE)return rc;
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&la.Luid);
la.Attributes=SE_PRIVILEGE_ENABLED;
pTokenPriv = new TOKEN_PRIVILEGES[2];
pTokenPriv-> PrivilegeCount=1;
memcpy(pTokenPriv-> Privileges,&la,sizeof(LUID_AND_ATTRIBUTES));
rc=AdjustTokenPrivileges(hToken,FALSE,pTokenPriv,0,NULL,&Len);
return rc;
}
void CYgdpDlg::OnButton6()
{
// TODO: Add your control notification handler code here
int pid=GetDlgItemInt(IDC_EDIT1);
risepri();
CreateThread(0,0,runCmdByThread,(void*)"notepad.exe",0,0);
}
void CYgdpDlg::OnButton7()
{
// TODO: Add your control notification handler code here
int a = DebugBreakProcess(processhandledebug);
CString cs;
cs.Format("%d",a);
AfxMessageBox(cs);
}
int unknown_libname_119_getparentvtabptr(void *pthis)
{
return *(DWORD *)pthis - 16;
}
int sub_1000AF90_getpvtabfnval(void *pthis)
{
return *(DWORD *)(unknown_libname_119_getparentvtabptr(pthis) + 4);//[[ecx]-12]=8
}
int unknown_libname_123_getvtable(void *pthis)
{
return *(DWORD *)pthis;
}
wchar_t *__cdecl sub_1000A8D0_wcschr(const wchar_t *a1, wchar_t a2)
{
return wcschr(a1, a2);
}
//pthis = 0341EB7C
//vptr=*pthis = 6CC5849C
//vptr-16[]={0x6CC59768,0x6CC11330,0x6CC3A0FB,0x6CC5971C,0x6CC114C0,0x6CC115D0};
signed int sub_1000A220finstr(void *pthis, __int16 a2/*35*/, int a3/*0*/)
{
signed int result; // eax@3
int v4; // eax@4
int v5; // [sp+0h] [bp-10h]@5
void *v6; // [sp+4h] [bp-Ch]@1
int v7; // [sp+8h] [bp-8h]@1
int v8; // [sp+Ch] [bp-4h]@4
v6 = pthis;
v7 = sub_1000AF90_getpvtabfnval(pthis);//8
if ( a3 >= 0 && a3 < v7 )
{
v4 = unknown_libname_123_getvtable(v6);//[pthis]03B364F8
v8 = sub_1000A8D0_wcschr((wchar_t *)(v4 + 2 * a3), a2);
if ( v8 )
v5 = (v8 - unknown_libname_123_getvtable(v6)) >> 1;
else
v5 = -1;
result = v5;
}
else
{
result = -1;
}
return result;
}
int sub_1000A160(void *pthis, int a2, int a3)
{
int v3; // ST18_4@8
void *v5; // [sp+0h] [bp-14h]@1
int v6; // [sp+10h] [bp-4h]@5
// v5 = pthis;
// if ( a2 < 0 )
// a2 = 0;
// if ( a3 < 0 )
// a3 = 0;
// v6 = sub_1000AF90_getpvtabfnval(this);
// if ( ATL::AtlAddThrow<int>(a3, a2) > v6 )
// a3 = v6 - a2;
// if ( a3 > 0 )
// {
// v3 = sub_1000A4B0(v5);
// ATL::Checked::memmove_s(
// (void *)(v3 + 2 * a2),
// 2 * (v6 - (a3 + a2) + 1),
// (void *)(v3 + 2 * a2 + 2 * a3),
// 2 * (v6 - (a3 + a2) + 1));
// sub_1000B550(v6 - a3);
// }
return sub_1000AF90_getpvtabfnval(v5);
}
int __cdecl sub_1000A920strcmpw(int a1, int a2)
{
// a2=034144E0 03B364F8 UNICODE "8297_C00"
// a1= 034144E4 03B362B0
bool v2; // cf@2
unsigned __int16 v5; // [sp+8h] [bp-Ch]@4
int v6; // [sp+Ch] [bp-8h]@1
int v7; // [sp+10h] [bp-4h]@1
v7 = a2;
v6 = a1;
while ( 1 )
{
v2 = *(WORD *)v6 < *(WORD *)v7;
if ( *(WORD *)v6 != *(WORD *)v7 )
break;
if ( !*(WORD *)v6 )
return 0;
v5 = *(WORD *)(v6 + 2);
v2 = v5 < *(WORD *)(v7 + 2);
if ( v5 != *(WORD *)(v7 + 2) )
break;
v6 += 4;
v7 += 4;
if ( !v5 )
return 0;
}
return -v2 - (v2 - 1);
}
int sub_1000B970_printexit()
{
return 0;
}
int sub_1000A100strcmpw(void *pthis, int a2)
{
int v2; // eax@3
void *v4; // [sp+0h] [bp-8h]@1
v4 = pthis;
if ( _CrtIsValidPointer(a2) == 0 )
sub_1000B970_printexit(-2147467259);
v2 = unknown_libname_123_getvtable(v4);
return sub_1000A920strcmpw(v2, a2);//-1
}
void* sub_1000b260ascii2wchar(const char* pstringansi)
{
// push ebp
// mov ebp, esp
// push 0 ; cchWideChar
// push 0 ; lpWideCharStr
// push 0FFFFFFFFh ; cbMultiByte
// mov eax, [ebp+lpMultiByteStr]
// push eax ; lpMultiByteStr
// push 0 ; dwFlags
// push 3 ; CodePage
// call ds:MultiByteToWideChar
// sub eax, 1
// pop ebp
// retn
return MultiByteToWideChar(3, 0, pstringansi, -1, 0, 0) - 1;
}
bool sub_1000B280(int a1)
{
return *(DWORD *)(a1 + 12) > 1;
}
void __cdecl unknown_libname_115()
{
sub_1000B970(-2147024882);
}
#define __thiscall __cdecl
char * sub_1000B7F0(void *pthis)
{
char *result; // eax@1
result = (char *)pthis + 12;
if ( InterlockedDecrement((signed __int32 *)pthis + 3) <= 0 )
result = (char *)(*(int (__thiscall **)(DWORD, DWORD))(**(DWORD **)pthis + 4))(*(DWORD *)pthis, pthis);
return result;
}
int __thiscall sub_1000B730getoffset(void *pthis)
{
return (int)((char *)pthis + 16);
}
int __thiscall unknown_libname_117(void *pthis, int a2)
{
void *v2; // ST00_4@1
int result; // eax@1
v2 = pthis;
result = sub_1000B730getoffset((void *)a2);//result=a2+16
*(DWORD *)v2 = result;
return result;
}
int sub_1000B2D0(int pthis,int size)
{
int v2; // eax@1
void *v3; // ST08_4@6
void *v4; // eax@6
int v6; // [sp+0h] [bp-1Ch]@4
void *v7; // [sp+8h] [bp-14h]@1
int v8; // [sp+Ch] [bp-10h]@1
int v9; // [sp+10h] [bp-Ch]@1
int v10; // [sp+14h] [bp-8h]@1
v7 = pthis;
v8 = unknown_libname_119_getparentvtabptr(pthis);
v10 = *(DWORD *)(v8 + 4);
v2 = (*(int (__thiscall **)(DWORD))(**(DWORD **)v8 + 16))(*(DWORD *)v8);
v9 = (**(int (__thiscall ***)(DWORD, DWORD, DWORD))v2)(v2, size, 2);
if ( !v9 )
unknown_libname_115();
if ( v10 >= size )
v6 = size;
else
v6 = v10;
v3 = (void *)sub_1000B730getoffset(v8);
v4 = (void *)sub_1000B730getoffset(v9);
wmemcpy_s(v4, v6 + 1, v3, v6 + 1);
*(DWORD *)(v9 + 4) = v10;
sub_1000B7F0((void *)v8);
return unknown_libname_117(v7, v9);
}
int sub_1000B410(char* bufferaddress,int size)
{
int result; // eax@4
void *v3; // [sp+0h] [bp-Ch]@1
signed int v4; // [sp+4h] [bp-8h]@6
int v5; // [sp+4h] [bp-8h]@7
int v6; // [sp+8h] [bp-4h]@1
v3 = bufferaddress;
v6 = unknown_libname_119_getparentvtabptr(bufferaddress);
if ( *(DWORD *)(v6 + 4) > size )
size = *(DWORD *)(v6 + 4);
if ( (unsigned __int8)sub_1000B280(v6) )
{
result = sub_1000B2D0(size);
}
else
{
result = v6;
if ( *(DWORD *)(v6 + 8) < size )
{
v4 = *(DWORD *)(v6 + 8);
if ( v4 <= 1024 )
v5 = 2 * v4;
else
v5 = v4 + 1024;
if ( v5 < size )
v5 = size;
result = sub_1000B3A0(v3, v5);
}
}
return result;
}
int sub_1000B500(char* bufferaddress,int size)
{
int v2; // edx@1
void *v4; // [sp+0h] [bp-10h]@1
v4 = bufferaddress ;
v2 = unknown_libname_119_getparentvtabptr(bufferaddress);
if ( ((*(DWORD *)(v2 + 8) - size) | (1 - *(DWORD *)(v2 + 12))) < 0 )
sub_1000B410(bufferaddress, size);
return *(DWORD *)v4;
}
#define _DWORD DWORD
bool __thiscall sub_1000B570IsLocked(int pthis)
{
return *(_DWORD *)(pthis + 12) < 0;
}
char *__thiscall sub_1000B730data(void *pthis)
{
return (char *)pthis + 16;
}
int __thiscall sub_1000B8A0(int pthis)
{
int result; // eax@1
result = pthis + 12;
InterlockedExchangeAdd((signed __int32 *)(pthis + 12), 1u);
return result;
}
int sub_1000AAD0CloneData(int a1)
{
int v1; // ST0C_4@6
int v2; // ST08_4@6
int v3; // ST04_4@6
int v4; // eax@6
int v6; // [sp+0h] [bp-8h]@1
int v7; // [sp+4h] [bp-4h]@3
v6 = (*(int (__thiscall **)(_DWORD))(**(_DWORD **)a1 + 16))(*(_DWORD *)a1);
if ( (unsigned __int8)sub_1000B570IsLocked(a1) || v6 != *(_DWORD *)a1 )
{
v7 = (**(int (__thiscall ***)(_DWORD, _DWORD, _DWORD))v6)(v6, *(_DWORD *)(a1 + 4), 2);
if ( !v7 )
unknown_libname_115();
*(_DWORD *)(v7 + 4) = *(_DWORD *)(a1 + 4);
v1 = *(_DWORD *)(a1 + 4) + 1;
v2 = sub_1000B730data((void *)a1);
v3 = *(_DWORD *)(a1 + 4) + 1;
v4 = sub_1000B730data((void *)v7);
wmemcpy_s((void *)v4, v3, (const void *)v2, v1);
}
else
{
v7 = a1;
sub_1000B8A0(a1);
}
return v7;
}
void *__thiscall sub_1000AB80(void *pbuffer, void *a2)
{
void *v2; // ST04_4@1
int v3; // ST0C_4@1
int v4; // ST08_4@1
v2 = pbuffer;
v3 = unknown_libname_119_getparentvtabptr(a2);
v4 = sub_1000AAD0CloneData(v3);
unknown_libname_117(v2, v4);
return v2;
}
void *__thiscall sub_1000ABC0(void *pbuffer, int a2)
{
void *v2; // ST04_4@1
v2 = pbuffer;
sub_1000AB80(pbuffer, (void *)a2);
return v2;
}
void* sub_1000B650operator_(char*bufferaddress,const char* pstringansi)
{
int v4= sub_1000b260ascii2wchar(pstringansi);//8
int v2 = sub_1000B500(bufferaddress, v4);
ATL::ChTraitsCRT<wchar_t>::ConvertToBaseType((LPWSTR)v2, v4, lpMultiByteStr, -1);
sub_1000B550(v5, v4);
}
_UNKNOWN *__cdecl sub_1001F496()
{
return &unk_1005050C;
}
_UNKNOWN *__cdecl unknown_libname_118()
{
return sub_1001F496();
}
int sub_1000B970(int errorcode)
{
//
// sub_1000B970 proc near ; CODE XREF: sub_1000A100+2A.p
// .text:1000B970 ; sub_1000A670+4A.p ...
// .text:1000B970
// .text:1000B970 arg_0 = dword ptr 8
// .text:1000B970
// .text:1000B970 push ebp
// .text:1000B971 mov ebp, esp
// .text:1000B973 cmp [ebp+arg_0], 8007000Eh
// .text:1000B97A jnz short loc_1000B983
// .text:1000B97C call sub_1001F3D0
// .text:1000B981 ; ---------------------------------------------------------------------------
// .text:1000B981 jmp short loc_1000B98C
// .text:1000B983 ; ---------------------------------------------------------------------------
// .text:1000B983
// .text:1000B983 loc_1000B983: ; CODE XREF: sub_1000B970+A.j
// .text:1000B983 mov eax, [ebp+arg_0]
// .text:1000B986 push eax ; int
// .text:1000B987 call ?AfxThrowOleException@@YGXJ@Z ; AfxThrowOleException(long)
// .text:1000B98C ; ---------------------------------------------------------------------------
// .text:1000B98C
// .text:1000B98C loc_1000B98C: ; CODE XREF: sub_1000B970+11.j
// .text:1000B98C pop ebp
// .text:1000B98D retn 4
// .text:1000B98D sub_1000B970 endp ; sp-analysis failed
}
void *__thiscall sub_1000B770(void *pthis, int a2)
{
int v2; // ST0C_4@3
void *v4; // [sp+0h] [bp-Ch]@1
v4 = pthis;
if ( !a2 )
sub_1000B970(-2147467259);
v2 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 12))(a2);
unknown_libname_117(v4, v2);
return v4;
}
void *__thiscall sub_1000B850(void *pthis)
{
void *v1; // ST04_4@1
int v2; // eax@1
v1 = pthis;
v2 = (int)unknown_libname_118();
sub_1000B770(v1, v2);
return v1;
}
int __cdecl sub_1000B9A0crc16(short *buffer, int size, short basecrc)
{
// crc 16;
return 0;
}
// Microsoft VisualC 2-10/net runtime
#define _BYTE BYTE
int __cdecl sub_10016060(int a1)
{
int result; // eax@1
int i; // [sp+0h] [bp-4h]@2
result = a1;
if ( *(_DWORD *)(a1 + 12) )
{
for ( i = 0; i < *(_DWORD *)a1; ++i )
*(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * i) = 0;
free(*(void **)(a1 + 12));
*(_DWORD *)(a1 + 12) = 0;
*(_DWORD *)a1 = 0;
*(_DWORD *)(a1 + 4) = 0;
result = a1;
*(_DWORD *)(a1 + 8) = 0;
}
return result;
}
int __cdecl sub_100123B0()
{
dword_10052EDC = 576;
sub_10016060(&unk_10052F00);
return sub_10016060(&unk_10052EE0);
}
unsigned int __cdecl unknown_libname_20(unsigned int a1/*输出buffer*/, int a2/*输入buffer*/, unsigned int a3/*长度*/)
{
int v3; // esi@1
unsigned int v4; // edi@1
unsigned int result; // eax@6
unsigned int v6; // ecx@8
int v7; // esi@26
int v8; // edi@26
unsigned int v9; // ecx@27
v3 = a2;
v4 = a1;
if ( a1 > a2 && a1 < a2 + a3 )
{
v7 = a3 + a2 - 4;
v8 = a3 + a1 - 4;
if ( v8 & 3 )
{
if ( a3 >= 4 )
JUMPOUT(__CS__, *((_DWORD *)unknown_libname_44 + (v8 & 3) + 1));
switch ( a3 )
{
case 0u:
LABEL_34:
result = a1;
break;
case 1u:
LABEL_35:
*(_BYTE *)(v8 + 3) = *(_BYTE *)(v7 + 3);
result = a1;
break;
case 2u:
LABEL_36:
*(_BYTE *)(v8 + 3) = *(_BYTE *)(v7 + 3);
*(_BYTE *)(v8 + 2) = *(_BYTE *)(v7 + 2);
result = a1;
break;
case 3u:
goto LABEL_37;
}
}
else
{
v9 = a3 >> 2;
if ( a3 >> 2 < 8 )
{
switch ( -v9 )
{
case 0:
break;
}
}
else
{
memcpy((void *)v8, (const void *)v7, 4 * v9);
v7 += 4 * v9;
v8 += 4 * v9;
}
switch ( a3 & 3 )
{
case 0u:
goto LABEL_34;
case 1u:
goto LABEL_35;
case 2u:
goto LABEL_36;
case 3u:
break;
}
LABEL_37:
*(_BYTE *)(v8 + 3) = *(_BYTE *)(v7 + 3);
*(_BYTE *)(v8 + 2) = *(_BYTE *)(v7 + 2);
*(_BYTE *)(v8 + 1) = *(_BYTE *)(v7 + 1);
result = a1;
}
}
else
{
if ( a3 >= 0x100 && dword_10052FB4 && (v3 = a2, v4 = a1, (a1 & 0xF) == (a2 & 0xF)) )
{
result = _VEC_memcpy(a1, a2, a3);
}
else
{
if ( v4 & 3 )
{
if ( a3 >= 4 )
JUMPOUT(__CS__, *((_DWORD *)unknown_libname_25 + (v4 & 3) + 1));
JUMPOUT(__CS__, *((_DWORD *)unknown_libname_37 + a3 - 4));
}
v6 = a3 >> 2;
if ( a3 >> 2 < 8 )
{
switch ( v6 )
{
case 0u:
goto LABEL_10;
case 1u:
goto LABEL_21;
case 2u:
goto LABEL_20;
case 3u:
goto LABEL_19;
case 4u:
goto LABEL_18;
case 5u:
goto LABEL_17;
case 6u:
break;
case 7u:
*(_DWORD *)(v4 + 4 * v6 - 28) = *(_DWORD *)(v3 + 4 * v6 - 28);
break;
}
*(_DWORD *)(v4 + 4 * v6 - 24) = *(_DWORD *)(v3 + 4 * v6 - 24);
LABEL_17:
*(_DWORD *)(v4 + 4 * v6 - 20) = *(_DWORD *)(v3 + 4 * v6 - 20);
LABEL_18:
*(_DWORD *)(v4 + 4 * v6 - 16) = *(_DWORD *)(v3 + 4 * v6 - 16);
LABEL_19:
*(_DWORD *)(v4 + 4 * v6 - 12) = *(_DWORD *)(v3 + 4 * v6 - 12);
LABEL_20:
*(_DWORD *)(v4 + 4 * v6 - 8) = *(_DWORD *)(v3 + 4 * v6 - 8);
LABEL_21:
*(_DWORD *)(v4 + 4 * v6 - 4) = *(_DWORD *)(v3 + 4 * v6 - 4);
v3 += 4 * v6;
v4 += 4 * v6;
}
else
{
memcpy((void *)v4, (const void *)v3, 4 * v6);
v3 += 4 * v6;
v4 += 4 * v6;
}
LABEL_10:
switch ( a3 & 3 )
{
case 0u:
result = a1;
break;
case 1u:
*(_BYTE *)v4 = *(_BYTE *)v3;
result = a1;
break;
case 2u:
*(_BYTE *)v4 = *(_BYTE *)v3;
*(_BYTE *)(v4 + 1) = *(_BYTE *)(v3 + 1);
result = a1;
break;
case 3u:
*(_BYTE *)v4 = *(_BYTE *)v3;
*(_BYTE *)(v4 + 1) = *(_BYTE *)(v3 + 1);
*(_BYTE *)(v4 + 2) = *(_BYTE *)(v3 + 2);
result = a1;
break;
}
}
}
return result;
}
int __cdecl sub_1001A4A0(int a1, unsigned int a2, int a3)
{
int result; // eax@3
int v4; // ST20_4@5
signed int v5; // edx@16
signed int v6; // [sp+0h] [bp-18h]@6
int v7; // [sp+4h] [bp-14h]@6
int v8; // [sp+4h] [bp-14h]@13
int v9; // [sp+8h] [bp-10h]@6
int v10; // [sp+8h] [bp-10h]@10
signed int i; // [sp+Ch] [bp-Ch]@12
int v12; // [sp+10h] [bp-8h]@13
int v13; // [sp+14h] [bp-4h]@2
if ( *(_DWORD *)(a3 + 4) < *(_DWORD *)a1 + 1 && (v13 = sub_10017DD0(a3, *(_DWORD *)a1 + 1)) != 0 )
{
result = v13;
}
else
{
if ( *(_DWORD *)(a1 + 8) == 1 )
{
*(_DWORD *)(a1 + 8) = 0;
v4 = sub_10015E10(a1, a2, a3);
*(_DWORD *)(a3 + 8) = 1;
*(_DWORD *)(a1 + 8) = 1;
sub_10016020(a3);
result = v4;
}
else
{
v6 = *(_DWORD *)a3;
v7 = *(_DWORD *)(a1 + 12);
v9 = *(_DWORD *)(a3 + 12);
if ( (*(_DWORD *)a1 != 1 || **(_DWORD **)(a1 + 12) > a2) && *(_DWORD *)a1 )
{
*(_DWORD *)(a3 + 8) = 0;
*(_DWORD *)a3 = *(_DWORD *)a1;
*(_DWORD *)v9 = *(_DWORD *)v7 - a2;
v8 = v7 + 4;
v12 = *(_DWORD *)v9 >> 31;
*(_DWORD *)v9 &= 0xFFFFFFFu;
v10 = v9 + 4;
for ( i = 1; i < *(_DWORD *)a1; ++i )
{
*(_DWORD *)v10 = *(_DWORD *)v8 - v12;
v8 += 4;
v12 = *(_DWORD *)v10 >> 31;
*(_DWORD *)v10 &= 0xFFFFFFFu;
v10 += 4;
}
}
else
{
if ( *(_DWORD *)a1 == 1 )
{
*(_DWORD *)v9 = a2 - *(_DWORD *)v7;
v10 = v9 + 4;
}
else
{
*(_DWORD *)v9 = a2;
v10 = v9 + 4;
}
i = 1;
*(_DWORD *)(a3 + 8) = 1;
*(_DWORD *)a3 = 1;
}
while ( 1 )
{
v5 = i++;
if ( v5 >= v6 )
break;
*(_DWORD *)v10 = 0;
v10 += 4;
}
sub_10016020(a3);
result = 0;
}
}
return result;
}
int __cdecl sub_10016020(int a1)
{
int result; // eax@1
while ( 1 )
{
result = a1;
if ( *(_DWORD *)a1 <= 0 )
break;
result = a1;
if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * *(_DWORD *)a1 - 4) )
break;
--*(_DWORD *)a1;
}
if ( !*(_DWORD *)a1 )
{
result = a1;
*(_DWORD *)(a1 + 8) = 0;
}
return result;
}
int __cdecl sub_10016020(int a1)
{
int result; // eax@1
while ( 1 )
{
result = a1;
if ( *(_DWORD *)a1 <= 0 )
break;
result = a1;
if ( *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * *(_DWORD *)a1 - 4) )
break;
--*(_DWORD *)a1;
}
if ( !*(_DWORD *)a1 )
{
result = a1;
*(_DWORD *)(a1 + 8) = 0;
}
return result;
}
#define __usercall
unsigned __int64 __usercall unknown_libname_106(unsigned __int64 a1, unsigned __int8 a2)
{
unsigned __int64 result; // qax@2
if ( a2 >= 0x40u )
result = 0i64;
else
result = a1 >> a2;
return result;
}
signed int __cdecl sub_10017DD0(int a1, signed int a2)
{
void *v3; // [sp+0h] [bp-8h]@2
int v4; // [sp+4h] [bp-4h]@4
int v5; // [sp+14h] [bp+Ch]@2
if ( *(_DWORD *)(a1 + 4) < a2 )
{
v5 = a2 + 64 - a2 % 32;
v3 = realloc(*(void **)(a1 + 12), 4 * v5);
if ( !v3 )
return -2;
*(_DWORD *)(a1 + 12) = v3;
v4 = *(_DWORD *)(a1 + 4);
*(_DWORD *)(a1 + 4) = v5;
while ( v4 < *(_DWORD *)(a1 + 4) )
*(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * v4++) = 0;
}
return 0;
}
int __cdecl sub_10015E10(int a1, unsigned int a2, int a3)
{
int result; // eax@3
int v4; // ST1C_4@7
int v5; // eax@17
int v6; // [sp+0h] [bp-18h]@8
int v7; // [sp+4h] [bp-14h]@8
int v8; // [sp+4h] [bp-14h]@9
signed int i; // [sp+8h] [bp-10h]@9
int v10; // [sp+8h] [bp-10h]@12
int v11; // [sp+Ch] [bp-Ch]@8
int v12; // [sp+Ch] [bp-Ch]@9
int v13; // [sp+Ch] [bp-Ch]@12
int v14; // [sp+10h] [bp-8h]@2
int v15; // [sp+14h] [bp-4h]@9
if ( *(_DWORD *)(a3 + 4) < *(_DWORD *)a1 + 1 && (v14 = sub_10017DD0(a3, *(_DWORD *)a1 + 1)) != 0 )
{
result = v14;
}
else
{
if ( *(_DWORD *)(a1 + 8) != 1 || *(_DWORD *)a1 <= 1 && **(_DWORD **)(a1 + 12) < a2 )
{
v6 = *(_DWORD *)a3;
*(_DWORD *)(a3 + 8) = 0;
v7 = *(_DWORD *)(a1 + 12);
v11 = *(_DWORD *)(a3 + 12);
if ( *(_DWORD *)(a1 + 8) )
{
*(_DWORD *)a3 = 1;
if ( *(_DWORD *)a1 == 1 )
{
*(_DWORD *)v11 = a2 - **(_DWORD **)(a1 + 12);
v13 = v11 + 4;
}
else
{
*(_DWORD *)v11 = a2;
v13 = v11 + 4;
}
v10 = 1;
}
else
{
*(_DWORD *)v11 = a2 + *(_DWORD *)v7;
v8 = v7 + 4;
v15 = *(_DWORD *)v11 >> 28;
*(_DWORD *)v11 &= 0xFFFFFFFu;
v12 = v11 + 4;
for ( i = 1; i < *(_DWORD *)a1; ++i )
{
*(_DWORD *)v12 = v15 + *(_DWORD *)v8;
v8 += 4;
v15 = *(_DWORD *)v12 >> 28;
*(_DWORD *)v12 &= 0xFFFFFFFu;
v12 += 4;
}
v10 = i + 1;
*(_DWORD *)v12 = v15;
v13 = v12 + 4;
*(_DWORD *)a3 = *(_DWORD *)a1 + 1;
}
while ( 1 )
{
v5 = v10++;
if ( v5 >= v6 )
break;
*(_DWORD *)v13 = 0;
v13 += 4;
}
sub_10016020(a3);
result = 0;
}
else
{
*(_DWORD *)(a1 + 8) = 0;
v4 = sub_1001A4A0(a1, a2, a3);
*(_DWORD *)(a3 + 8) = 1;
*(_DWORD *)(a1 + 8) = 1;
sub_10016020(a3);
result = v4;
}
}
return result;
}
int __cdecl sub_100198F0(int a1, unsigned int a2, int a3)
{
int result; // eax@3
unsigned __int64 v4; // ST0C_8@6
int v5; // ecx@6
int v6; // eax@8
int v7; // [sp+Ch] [bp-18h]@4
int v8; // [sp+10h] [bp-14h]@4
int v9; // [sp+14h] [bp-10h]@4
int v10; // [sp+18h] [bp-Ch]@4
int v11; // [sp+18h] [bp-Ch]@7
int i; // [sp+1Ch] [bp-8h]@4
int v13; // [sp+1Ch] [bp-8h]@7
int v14; // [sp+20h] [bp-4h]@2
if ( *(_DWORD *)(a3 + 4) < *(_DWORD *)a1 + 1 && (v14 = sub_10017DD0(a3, *(_DWORD *)a1 + 1)) != 0 )
{
result = v14;
}
else
{
v9 = *(_DWORD *)a3;
*(_DWORD *)(a3 + 8) = *(_DWORD *)(a1 + 8);
v7 = *(_DWORD *)(a1 + 12);
v10 = *(_DWORD *)(a3 + 12);
v8 = 0;
for ( i = 0; i < *(_DWORD *)a1; ++i )
{
v4 = a2 * (unsigned __int64)*(_DWORD *)v7 + (unsigned int)v8;
v7 += 4;
*(_DWORD *)v10 = v4 & 0xFFFFFFF;
v5 = v10 + 4;
v10 += 4;
LOBYTE(v5) = 28;
v8 = unknown_libname_106(v5, HIDWORD(v4));
}
*(_DWORD *)v10 = v8;
v11 = v10 + 4;
v13 = i + 1;
while ( 1 )
{
v6 = v13++;
if ( v6 >= v9 )
break;
*(_DWORD *)v11 = 0;
v11 += 4;
}
*(_DWORD *)a3 = *(_DWORD *)a1 + 1;
sub_10016020(a3);
result = 0;
}
return result;
}
int __cdecl sub_1001BAC0(int a1)
{
int result; // eax@2
int v2; // [sp+0h] [bp-8h]@1
int i; // [sp+4h] [bp-4h]@1
*(_DWORD *)(a1 + 8) = 0;
*(_DWORD *)a1 = 0;
v2 = *(_DWORD *)(a1 + 12);
for ( i = 0; ; ++i )
{
result = i;
if ( i >= *(_DWORD *)(a1 + 4) )
break;
*(_DWORD *)v2 = 0;
v2 += 4;
}
return result;
}
signed int __cdecl sub_10019AB0(int a1, int *a2, signed int a3)
{
signed int result; // eax@3
char v4; // [sp+0h] [bp-14h]@10
signed int v5; // [sp+8h] [bp-Ch]@5
signed int i; // [sp+Ch] [bp-8h]@12
int v7; // [sp+10h] [bp-4h]@17
int v8; // [sp+10h] [bp-4h]@19
sub_1001BAC0(a1);
if ( a3 >= 2 && a3 <= 64 )
{
if ( *(_BYTE *)a2 == 45 )
{
a2 = (int *)((char *)a2 + 1);
v5 = 1;
}
else
{
v5 = 0;
}
sub_1001BAC0(a1);
while ( *(_BYTE *)a2 )
{
v4 = a3 >= 36 ? *(_BYTE *)a2 : (unsigned __int8)toupper(*(_BYTE *)a2);
for ( i = 0; i < 64 && v4 != off_100500A8[0][i]; ++i )
;
if ( i >= a3 )
break;
v7 = sub_100198F0(a1, a3, a1);
if ( v7 )
return v7;
v8 = sub_10015E10(a1, i, a1);
if ( v8 )
return v8;
a2 = (int *)((char *)a2 + 1);
}
if ( (*(_DWORD *)a1 == 0) != 1 )
*(_DWORD *)(a1 + 8) = v5;
result = 0;
}
else
{
result = -3;
}
return result;
}
signed int __cdecl sub_10017E80(int a1)
{
//初始化 a1
// a1[0]=0;
// a1[1]=32;
// a1[2]=0;
// a1[3]=malloc(0x80);
// a1[3]清0
signed int result; // eax@2
signed int i; // [sp+0h] [bp-4h]@3
*(_DWORD *)(a1 + 12) = malloc(0x80u);
if ( *(_DWORD *)(a1 + 12) )
{
for ( i = 0; i < 32; ++i )
*(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * i) = 0;
*(_DWORD *)a1 = 0;
*(_DWORD *)(a1 + 4) = 32;
*(_DWORD *)(a1 + 8) = 0;
result = 0;
}
else
{
result = -2;
}
return result;
}
int __cdecl sub_100122F0(int a1, int a2, int a3, int a4, int a5)
{
// (int)&dword_10052EDC,
// (int *)"C54F22A1B8EAA17432877F871613EFEA69327328005F35B25E27139A3EF12A93BA6FE9D391CDFD0D8B039C7EDF9579CB2ACCEDDF92EE6381CC4FEEB575E0FDAC2D5CA51D1077AB71",
// (int *)"BEBC69833C7A8F6430785C8E8D0B170477A23A4F22E603EFBD08539DBC27C6DB335D68F04C8595374289EADAA418B83BB0930D30B0E69204F5005D3C79F8B2A73CFE458AF7B57573",
// 576,
// 16
*(_DWORD *)a1 = a4;
sub_10017E80(a1 + 4);
sub_10017E80(a1 + 36);
if ( a2 )
sub_10019AB0(a1 + 4, a2, a5);
if ( a3 )
sub_10019AB0(a1 + 36, a3, a5);
return 0;
}
int __cdecl sub_10012360()
{
dword_10052EDC = 576;
sub_10017E80(&unk_10052F00);
sub_10017E80(&unk_10052EE0);
return sub_100122F0(
&dword_10052EDC,
"C54F22A1B8EAA17432877F871613EFEA69327328005F35B25E27139A3EF12A93BA6FE9D391CDFD0D8B039C7EDF9579CB2ACCEDDF92EE6381CC4FEEB575E0FDAC2D5CA51D1077AB71",
"BEBC69833C7A8F6430785C8E8D0B170477A23A4F22E603EFBD08539DBC27C6DB335D68F04C8595374289EADAA418B83BB0930D30B0E69204F5005D3C79F8B2A73CFE458AF7B57573",
576,
16);
}
signed int __cdecl sub_10017340(int a1, int a2, int a3, int a4)
{
signed int result; // eax@2
int v5; // [sp+0h] [bp-2Ch]@19
char v6; // [sp+4h] [bp-28h]@8
int v7; // [sp+14h] [bp-18h]@4
char v8; // [sp+18h] [bp-14h]@4
int v9; // [sp+28h] [bp-4h]@15
if ( *(_DWORD *)(a3 + 8) == 1 )
{
result = -3;
}
else
{
if ( *(_DWORD *)(a2 + 8) == 1 )
{
v7 = sub_10017E80(&v8);
if ( v7 )
{
result = v7;
}
else
{
v7 = sub_100180A0(a1, a3, &v8);
if ( v7 )
{
sub_10016060(&v8);
result = v7;
}
else
{
v7 = sub_10017E80(&v6);
if ( v7 )
{
sub_10016060(&v8);
result = v7;
}
else
{
v7 = sub_10015D30(a2, &v6);
if ( v7 )
{
sub_100160E0(&v8, (unsigned int)&v6);
result = v7;
}
else
{
v7 = sub_10017340(&v8, &v6, a3, a4);
sub_100160E0(&v8, (unsigned int)&v6);
result = v7;
}
}
}
}
}
else
{
if ( sub_1001A170(a3) == 1 )
{
result = sub_1001BD40(a1, a2, a3, a4, 1);
}
else
{
v9 = sub_10017100(a3);
if ( !v9 )
v9 = 2 * sub_1001A0C0(a3);
v5 = *(_DWORD *)a3 > 0 && **(_DWORD **)(a3 + 12) & 1;
if ( v5 == 1 || v9 )
result = sub_10017510(a1, a2, a3, a4, v9);
else
result = sub_1001BD40(a1, a2, a3, a4, 0);
}
}
}
return result;
}
int __cdecl sub_100123E0(int a1, int a2, int a3)
{
sub_10017340(a1, a3 + 36, a3 + 4, a2);
return 0;
}
void *__cdecl sub_10012700(int a1, int a2, int a3, int a4)
{
void *result; // eax@1
char v5; // ST17_1@4
char *v6; // [sp+Ch] [bp-254h]@3
char v7; // [sp+10h] [bp-250h]@3
char v8; // [sp+20h] [bp-240h]@1
char v9; // [sp+21h] [bp-23Fh]@1
int v10; // [sp+B8h] [bp-1A8h]@1
int v11; // [sp+BCh] [bp-1A4h]@1
char v12; // [sp+C0h] [bp-1A0h]@3
char v13; // [sp+D0h] [bp-190h]@1
char v14; // [sp+D1h] [bp-18Fh]@1
int v15; // [sp+16Ch] [bp-F4h]@1
char v16; // [sp+170h] [bp-F0h]@1
char v17; // [sp+171h] [bp-EFh]@1
int v18; // [sp+1B8h] [bp-A8h]@1
int v19; // [sp+1BCh] [bp-A4h]@1
char v20; // [sp+1C0h] [bp-A0h]@1
char v21; // [sp+1C1h] [bp-9Fh]@1
unsigned int v22; // [sp+258h] [bp-8h]@1
int v23; // [sp+25Ch] [bp-4h]@1
int v24; // [sp+260h] [bp+0h]@1
v22 = (unsigned int)&v24 ^ __security_cookie;
v16 = 0;
memset(&v17, 0, 0x47u);
v8 = 0;
memset(&v9, 0, 0x90u);
v20 = 0;
memset(&v21, 0, 0x90u);
v13 = 0;
result = memset(&v14, 0, 0x90u);
v18 = 0;
v23 = 0;
v19 = 0;
v15 = 0;
v11 = 0;
v10 = 0;
while ( v11 < a2 )
{
sub_10017E80(&v12);
sub_10017E80(&v7);
memset(&v8, 0, 0x91u);
memset(&v20, 0, 0x91u);
v18 = *(_BYTE *)(v11 + a1);
sub_10012410(a1 + v11 + 1, v18, &v8, 145);
v11 += v18 + 1;
sub_10019AB0((int)&v12, (int *)&v8, 16);
sub_100123E0(&v12, &v7, &dword_10052EDC);
sub_1001B990(&v7, &v20, 16);
v6 = &v20;
do
v5 = *v6++;
while ( v5 );
v15 = sub_10012510(&v20, v6 - &v21, &v13, 145);
unknown_libname_20(v10 + a3, &v14, v15 - 1);
v10 = v10 + v15 - 1;
if ( !v15 )
{
sub_10016060(&v12);
return (void *)sub_10016060(&v7);
}
*(_DWORD *)a4 = v15 + *(_DWORD *)a4 - 1;
sub_10016060(&v7);
result = (void *)sub_10016060(&v12);
}
return result;
}
// a2为buffer指针,a3为长度=80,a4,a5为返回值地址
//返回值*a5=64就对了
signed int __thiscall sub_100054D0(void *pthis, u_long *a2, unsigned int a3, int a4, int a5)
{
signed int result; // eax@2
u_long netlong; // [sp+4h] [bp-20Ch]@1
char v7; // [sp+8h] [bp-208h]@3
char v8; // [sp+9h] [bp-207h]@3
char v9; // [sp+108h] [bp-108h]@3
char v10; // [sp+109h] [bp-107h]@3
unsigned int v11; // [sp+20Ch] [bp-4h]@1
int v12; // [sp+210h] [bp+0h]@1
v11 = (unsigned int)&v12 ^ __security_cookie;
sub_10012360(pthis);
netlong = ntohl(*a2);
if ( a3 >= netlong + 4 )
{
v9 = 0;
memset(&v10, 0, 0xFFu);
v7 = 0;
memset(&v8, 0, 0xFFu);
unknown_libname_20(&v9, a2 + 1, netlong);
sub_10012700(&v9, netlong, &v7, a5);
unknown_libname_20(a4, &v7, *(_DWORD *)a5);
sub_100123B0();
result = 1;
}
else
{
sub_100123B0();
result = 0;
}
return result;
}
int sub_10004730cpdv8format(void *pthis, HANDLE hFile)
{
int v3; // eax@10
int v4; // ecx@17
bool v5; // cf@21
int v6; // [sp-10h] [bp-A6A0h]@17
unsigned int v7; // [sp-Ch] [bp-A69Ch]@1
int v8; // [sp+0h] [bp-A690h]@69
int v9; // [sp+4h] [bp-A68Ch]@69
DWORD v10; // [sp+8h] [bp-A688h]@62
void *v11; // [sp+Ch] [bp-A684h]@36
int v12; // [sp+10h] [bp-A680h]@27
int v13; // [sp+14h] [bp-A67Ch]@25
unsigned __int8 v14; // [sp+1Ah] [bp-A676h]@23
unsigned __int8 v15; // [sp+1Bh] [bp-A675h]@21
char *v16; // [sp+1Ch] [bp-A674h]@20
char *v17; // [sp+20h] [bp-A670h]@20
int v18; // [sp+24h] [bp-A66Ch]@17
void *v19; // [sp+28h] [bp-A668h]@17
unsigned int v20; // [sp+2Ch] [bp-A664h]@14
char v21; // [sp+33h] [bp-A65Dh]@13
char *v22; // [sp+34h] [bp-A65Ch]@12
char *v23; // [sp+38h] [bp-A658h]@12
void *v24; // [sp+3Ch] [bp-A654h]@1
int v25; // [sp+40h] [bp-A650h]@73
void *v26; // [sp+44h] [bp-A64Ch]@73
void *v27; // [sp+48h] [bp-A648h]@35
size_t v28; // [sp+4Ch] [bp-A644h]@35
void *v29; // [sp+54h] [bp-A63Ch]@28
int v30; // [sp+58h] [bp-A638h]@18
void *v31; // [sp+5Ch] [bp-A634h]@18
int *v32; // [sp+60h] [bp-A630h]@17
int v33; // [sp+64h] [bp-A62Ch]@11
void *v34; // [sp+68h] [bp-A628h]@11
void *v35; // [sp+70h] [bp-A620h]@7
void *v36; // [sp+78h] [bp-A618h]@3
unsigned int j; // [sp+80h] [bp-A610h]@59
DWORD NumberOfBytesRead; // [sp+84h] [bp-A60Ch]@5
int v39; // [sp+8Ch] [bp-A604h]@8
int v40; // [sp+90h] [bp-A600h]@29
char v41; // [sp+94h] [bp-A5FCh]@29
char v42; // [sp+95h] [bp-A5FBh]@29
char v43; // [sp+114h] [bp-A57Ch]@64
__int16 v44; // [sp+A114h] [bp-57Ch]@33
__int16 v45; // [sp+A116h] [bp-57Ah]@33
char v46; // [sp+A118h] [bp-578h]@1
int v47; // [sp+A11Ch] [bp-574h]@31
char *v48; // [sp+A120h] [bp-570h]@33
LPVOID lpBuffer; // [sp+A124h] [bp-56Ch]@1
int v50; // [sp+A128h] [bp-568h]@1
char v51; // [sp+A12Ch] [bp-564h]@31
unsigned __int8 v52; // [sp+A15Ch] [bp-534h]@33
unsigned __int8 v53; // [sp+A15Dh] [bp-533h]@33
unsigned __int8 v54; // [sp+A15Eh] [bp-532h]@33
unsigned __int8 v55; // [sp+A15Fh] [bp-531h]@33
unsigned __int8 v56; // [sp+A160h] [bp-530h]@33
unsigned __int8 v57; // [sp+A161h] [bp-52Fh]@33
int v58; // [sp+A164h] [bp-52Ch]@33
int v59; // [sp+A168h] [bp-528h]@1
int v60; // [sp+A16Ch] [bp-524h]@31
int v61; // [sp+A170h] [bp-520h]@33
int v62; // [sp+A178h] [bp-518h]@53
char v63; // [sp+A17Ch] [bp-514h]@1
DWORD nNumberOfBytesToRead; // [sp+A180h] [bp-510h]@5
char Buffer; // [sp+A184h] [bp-50Ch]@33
char v66; // [sp+A185h] [bp-50Bh]@33
unsigned __int8 v67; // [sp+A18Ch] [bp-504h]@43
char v68; // [sp+A18Dh] [bp-503h]@43
int v69; // [sp+A208h] [bp-488h]@1
int v70; // [sp+A20Ch] [bp-484h]@33
int v71; // [sp+A210h] [bp-480h]@1
wchar_t Dst; // [sp+A214h] [bp-47Ch]@1
char v73; // [sp+A216h] [bp-47Ah]@1
int v74; // [sp+A618h] [bp-78h]@33
char v75; // [sp+A61Ch] [bp-74h]@53
char v76; // [sp+A61Dh] [bp-73h]@53
unsigned int v77; // [sp+A670h] [bp-20h]@1
char v78; // [sp+A674h] [bp-1Ch]@1
int v79; // [sp+A678h] [bp-18h]@1
__int16 v80; // [sp+A67Ch] [bp-14h]@33
int i; // [sp+A680h] [bp-10h]@57
int v82; // [sp+A68Ch] [bp-4h]@1
int v83; // [sp+A690h] [bp+0h]@1
v77 = (unsigned int)&v83 ^ __security_cookie;
v7 = (unsigned int)&v83 ^ __security_cookie;
v24 = this;
Dst = 0;
memset(&v73, 0, 0x3FEu);
sub_1000ABC0(&v63, (int)((char *)v24 + 616));//拷贝数据
v82 = 0;
sub_1000B850(&v78);//由全局变量unk_1005050C所指向的函数得到一个值
LOBYTE(v82) = 1;
v79 = 18;
lpBuffer = 0;
v71 = 0;
v69 = 0;
v50 = 0;
v59 = 1;
std::ios_base::ios_base(&v46);
LOBYTE(v82) = 2;
if ( hFile == (HANDLE)-1 )
{
sub_1000A790(&Dst, L"Fail to open CPB file!");
sub_10001C40(1, 3, (unsigned int)&Dst);
LOBYTE(v82) = 1;
std::locale::facet::_facet(&v46);
LOBYTE(v82) = 0;
sub_1000B710(&v78);
v82 = -1;
sub_1000B710(&v63);
return 0;
}
v36 = (void *)operator new(0x15Cu);
lpBuffer = v36;
if ( !v36 )
{
sub_10001C40(1, 3, (unsigned int)L"Fail to malloc head structure!");
LOBYTE(v82) = 1;
std::locale::facet::_facet(&v46);
LOBYTE(v82) = 0;
sub_1000B710(&v78);
v82 = -1;
sub_1000B710(&v63);
return 0;
}
memset(lpBuffer, 0, 0x15Cu);
nNumberOfBytesToRead = 344;
SetFilePointer(hFile, 0, 0, 0);
if ( !ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, &NumberOfBytesRead, 0)
|| NumberOfBytesRead != nNumberOfBytesToRead )
{
sub_10001C40(1, 3, (unsigned int)L"Fail to read file head !");
v35 = lpBuffer;
operator delete(lpBuffer);
lpBuffer = 0;
LOBYTE(v82) = 1;
std::locale::facet::_facet(&v46);
LOBYTE(v82) = 0;
sub_1000B710(&v78);
v82 = -1;
sub_1000B710(&v63);
return 0;
}
sub_1000B650operator_(&v78, (LPCSTR)lpBuffer + 4);//分配内存
v39 = -1;
v39 = sub_1000A220(&v78, 35, 0);//在v78里面找字符#
if ( v39 != -1 )
sub_1000A160(&v78, v39, 32);
v3 = unknown_libname_123((char *)v24 + 624);//从this对象获取字符串指针
if ( sub_1000A100(&v78, v3) )//手机类型和包的类型做比较
{
sub_1000A790(&Dst, L"the CPB file is not used for the chosen project!");
sub_10001C40(1, 3, (unsigned int)&Dst);
v59 = 0;
v34 = lpBuffer;
operator delete(lpBuffer);
lpBuffer = 0;
v33 = v59;
LOBYTE(v82) = 1;
std::locale::facet::_facet(&v46);
LOBYTE(v82) = 0;
sub_1000B710(&v78);
v82 = -1;
sub_1000B710(&v63);
return v33;
}
v23 = (char *)v24 + 676;
v22 = (char *)v24 + 677;
do
v21 = *v23++;
while ( v21 );
v20 = v23 - v22;//字符串长度
if ( v23 == v22 )//字符串长度为0
{
strcpy_s((char *)v24 + 676, 0x20u, (const char *)lpBuffer + 4);//手机名字拷贝过去
if ( v39 != -1 )
*((_BYTE *)v24 + v39 + 676) = 0;//v39为长度
sub_1000B650operator_(&v78, (LPCSTR)v24 + 676);//内存分配
v6 = v4;
v32 = &v6;
v19 = sub_1000ABC0(&v6, (int)&v78);//拷贝
v18 = sub_10008870(v6);//判断是否在机型库
if ( !v18 )
{
v31 = lpBuffer;
operator delete(lpBuffer);
lpBuffer = 0;
v30 = 0;
LOBYTE(v82) = 1;
std::locale::facet::_facet(&v46);
LOBYTE(v82) = 0;
sub_1000B710(&v78);
v82 = -1;
sub_1000B710(&v63);
return v30;
}
}
else
{
v17 = (char *)lpBuffer + 4;
v16 = (char *)v24 + 676;
//比较v16 v17字符串是否相等 如果不相等v13不为0
while ( 1 )
{
v15 = *v16;
v5 = v15 < *v17;
if ( v15 != *v17 )
break;
if ( !v15 )
goto LABEL_25;
v14 = v16[1];
v5 = v14 < v17[1];
if ( v14 != v17[1] )
break;
v16 += 2;
v17 += 2;
if ( !v14 )
{
LABEL_25:
v13 = 0;
goto LABEL_27;
}
}
v13 = -v5 - (v5 - 1);
LABEL_27:
v12 = v13;
if ( v13 )//v16 v17字符串不相等
{
sub_10001C40(1, 3, (unsigned int)L"the CPB file is not used for the chosen project !!!");
v29 = lpBuffer;
operator delete(lpBuffer);
lpBuffer = 0;
LOBYTE(v82) = 1;
std::locale::facet::_facet(&v46);
LOBYTE(v82) = 0;
sub_1000B710(&v78);
v82 = -1;
sub_1000B710(&v63);
return 0;
}
}
//字符串判断结束,是正确的
v50 = sub_1000B9A0crc16(lpBuffer, nNumberOfBytesToRead - 4, v50);//计算crc
v41 = 0;
memset(&v42, 0, 0x7Fu);
v40 = 0;
sub_100054D0((char *)lpBuffer + 180, 80, &v41, &v40);
if ( v40 == 64 )
{
unknown_libname_20(&v51, &v41, 60);
v60 = 0;
v60 = *(int *)((char *)&v40 + v40);
v47 = sub_1000B9A0(&v51, v40 - 4, 0);
if ( v60 == v47 )
{
v80 = v57 + v56 + v55 + v54 + v53 + v52;
v44 = (unsigned __int16)(v57 + v56 + v55 + v54 + v53 + v52) / 5 - v55;
v45 = (unsigned __int16)(v57 + v56 + v55 + v54 + v53 + v52) / 5 - v56;
v70 = v58 - 344;
Buffer = 0;
memset(&v66, 0, 0x7Fu);
v48 = 0;
v61 = 0;
v74 = 0;
while ( v70 )
{
v28 = 140;
v27 = (void *)operator new(0x8Cu);
if ( v27 )
{
memset(v27, 0, v28);
v11 = v27;
}
else
{
v11 = 0;
}
v69 = (int)v11;
*((_DWORD *)v11 + 34) = 0;
if ( !v69 )
{
v59 = 0;
sub_10001C40(1, 3, (unsigned int)L"Fail to allocate the memory!");
goto LABEL_71;
}
v61 = 9;
if ( !ReadFile(hFile, &Buffer, 9u, &NumberOfBytesRead, 0) || NumberOfBytesRead != v61 )
{
v59 = 0;
sub_10001C40(1, 3, (unsigned int)L"Fail to read the file list head!");
goto LABEL_71;
}
v70 -= 9;
v61 = v67;
v48 = &v68;
if ( !ReadFile(hFile, &v68, v67, &NumberOfBytesRead, 0) || NumberOfBytesRead != v61 )
{
v59 = 0;
sub_10001C40(1, 3, (unsigned int)L"Fail to read the file list!!");
goto LABEL_71;
}
v70 -= v61;
v50 = sub_1000B9A0(&Buffer, v61 + 9, v50);
unknown_libname_20(v69, &Buffer, v61 + 9);
sub_10011E70(v69, v74, &v44, (char *)lpBuffer + 100);
if ( v74 )
*(_DWORD *)(v71 + 136) = v69;
else
*((_DWORD *)v24 + 200) = v69;
v71 = v69;
++v74;
}
if ( v50 == *((_DWORD *)lpBuffer + 85) || v50 == *((_DWORD *)lpBuffer + 85) - 8 )
{
v62 = 0;
v75 = 0;
memset(&v76, 0, 0x4Fu);
sub_100054D0((char *)lpBuffer + 260, 80, &v75, &v62);
if ( v62 == 24 )
{
v60 = 0;
v60 = sub_1000B9A0(&v75, 20, 0);
v47 = *(int *)((char *)&v74 + v62);
if ( v47 == v60 )
{
sub_100129D0((char *)v24 + 836);
for ( i = *((_DWORD *)v24 + 200); i; i = *(_DWORD *)(i + 136) )
{
for ( j = *(_DWORD *)(i + 4); j; j -= nNumberOfBytesToRead )
{
if ( j <= 0xA000 )
v10 = j;
else
v10 = 40960;
nNumberOfBytesToRead = v10;
if ( !ReadFile(hFile, &v43, v10, &NumberOfBytesRead, 0) || NumberOfBytesRead != nNumberOfBytesToRead )
{
v59 = 0;
sub_10001C40(1, 3, (unsigned int)L"Fail to read the file data!");
goto LABEL_71;
}
sub_10014680((char *)v24 + 836, &v43, nNumberOfBytesToRead);
}
}
sub_100147C0((char *)v24 + 836);
v9 = strncmp(&v75, (const char *)v24 + 860, 20);
v8 = v9;
if ( v9 )
v59 = 0;
}
else
{
v59 = 0;
sub_10001C40(1, 3, (unsigned int)L"Check crc-data Error!");
}
}
else
{
v59 = 0;
sub_10001C40(1, 3, (unsigned int)L"Check cpb data error!");
}
}
else
{
v59 = 0;
}
}
else
{
v59 = 0;
sub_10001C40(1, 3, (unsigned int)L"Fail to check the file head!!");
}
}
else
{
v59 = 0;
sub_10001C40(1, 3, (unsigned int)L"Fail to decrypte the CPB head content!");
}
LABEL_71:
if ( !v59 )
{
v6 = *((_DWORD *)v24 + 200);
sub_1000C470(v6);
*((_DWORD *)v24 + 200) = 0;
}
v26 = lpBuffer;
operator delete(lpBuffer);
lpBuffer = 0;
v25 = v59;
LOBYTE(v82) = 1;
std::locale::facet::_facet(&v46);
LOBYTE(v82) = 0;
sub_1000B710(&v78);
v82 = -1;
sub_1000B710(&v63);
return v25;
}
// 6C871784 8B4D D4 MOV ECX,DWORD PTR SS:[EBP-2C]
// 6C871787 E8 44050000 CALL dChkData.6C871CD0
// 6C87178C 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
signed int sub_10001CD0(void *pthis)
{
int v2; // eax@3
signed int v3; // ecx@16
int v4; // edi@16
LPVOID v5; // esi@16
bool v6; // zf@16
int v7; // ecx@37
int v8; // [sp-Ch] [bp-4C8h]@37
int v9; // [sp-8h] [bp-4C4h]@37
unsigned int v10; // [sp-4h] [bp-4C0h]@1
int v11; // [sp+8h] [bp-4B4h]@40
int v12; // [sp+Ch] [bp-4B0h]@37
int v13; // [sp+10h] [bp-4ACh]@29
int v14; // [sp+14h] [bp-4A8h]@29
int v15; // [sp+18h] [bp-4A4h]@27
int v16; // [sp+1Ch] [bp-4A0h]@27
int v17; // [sp+20h] [bp-49Ch]@23
int v18; // [sp+24h] [bp-498h]@23
int v19; // [sp+28h] [bp-494h]@21
int v20; // [sp+2Ch] [bp-490h]@21
int v21; // [sp+30h] [bp-48Ch]@14
int v22; // [sp+34h] [bp-488h]@14
int v23; // [sp+38h] [bp-484h]@13
int v24; // [sp+3Ch] [bp-480h]@13
int v25; // [sp+40h] [bp-47Ch]@10
int v26; // [sp+44h] [bp-478h]@10
void *v27; // [sp+48h] [bp-474h]@1
int v28; // [sp+4Ch] [bp-470h]@47
int v29; // [sp+50h] [bp-46Ch]@43
int *v30; // [sp+54h] [bp-468h]@37
void *v31; // [sp+58h] [bp-464h]@31
void *v32; // [sp+5Ch] [bp-460h]@30
void *v33; // [sp+60h] [bp-45Ch]@28
void *v34; // [sp+64h] [bp-458h]@25
void *v35; // [sp+68h] [bp-454h]@24
void *v36; // [sp+6Ch] [bp-450h]@22
void *v37; // [sp+70h] [bp-44Ch]@20
void *v38; // [sp+74h] [bp-448h]@15
void *v39; // [sp+78h] [bp-444h]@11
void *v40; // [sp+7Ch] [bp-440h]@7
void *v41; // [sp+80h] [bp-43Ch]@5
DWORD NumberOfBytesRead; // [sp+84h] [bp-438h]@5
LPVOID lpBuffer; // [sp+88h] [bp-434h]@5
int v44; // [sp+8Ch] [bp-430h]@37
HANDLE hFile; // [sp+90h] [bp-42Ch]@3
char v46; // [sp+94h] [bp-428h]@37
int v47; // [sp+98h] [bp-424h]@1
int v48; // [sp+9Ch] [bp-420h]@1
int v49; // [sp+A0h] [bp-41Ch]@1
int v50; // [sp+A4h] [bp-418h]@8
wchar_t Dst; // [sp+A8h] [bp-414h]@1
char v52; // [sp+AAh] [bp-412h]@1
unsigned int v53; // [sp+4A8h] [bp-14h]@1
int v54; // [sp+4ACh] [bp-10h]@1
int v55; // [sp+4B8h] [bp-4h]@37
int v56; // [sp+4BCh] [bp+0h]@1
v53 = (unsigned int)&v56 ^ __security_cookie;
v10 = (unsigned int)&v56 ^ __security_cookie;
v27 = this;
v48 = 1;
v47 = 1;
v49 = 1;
Dst = 0;
memset(&v52, 0, 0x3FEu);
v54 = 0;
sub_1000A790(&Dst, L"Checking CPB file... ");
sub_10001C40(1, 1, (unsigned int)&Dst);
if ( sub_1000A4F0((char *)v27 + 616) )
{
sub_1000A790(&Dst, L"CPB file is not exist!");
sub_10001C40(v47, 3, (unsigned int)&Dst);
return 0;
}
v2 = unknown_libname_123((char *)v27 + 616);
hFile = CreateFileW((LPCWSTR)v2, 0x80000000u, 1u, 0, 3u, 0x80u, 0);
if ( hFile == (HANDLE)-1 )
{
sub_1000A790(&Dst, L"Fail to open CPB file!");
sub_10001C40(v47, 3, (unsigned int)&Dst);
return 0;
}
NumberOfBytesRead = 0;
v41 = operator new__(0x200u);
lpBuffer = v41;
memset(v41, 0, 0x200u);
SetFilePointer(hFile, 0, 0, 0);
if ( !ReadFile(hFile, v41, 0x200u, &NumberOfBytesRead, 0) || NumberOfBytesRead != 512 )
{
v49 = 3;
sub_1000A790(&Dst, L"Fail to check CPB head structure!");
sub_10001C40(v47, v49, (unsigned int)&Dst);
v40 = lpBuffer;
operator delete(lpBuffer);
return 0;
}
sub_10001C40(1, 1, (unsigned int)L"Get CPB version ...");
v50 = sub_1000A4B0((char *)v27 + 624);
sub_1000AF40((char *)v27 + 624, -1);
if ( sub_10011780(v50) )
{
if ( *(_DWORD *)lpBuffer != unk_10045CFC && (v26 = strncmp((const char *)lpBuffer, "YLCP", 4), (v25 = v26) != 0) )
{
if ( *(_DWORD *)lpBuffer != unk_10045D0C
&& (v24 = strncmp((const char *)lpBuffer, (const char *)&unk_10045D14, 4), (v23 = v24) != 0)
&& (v22 = strncmp((const char *)lpBuffer, (const char *)&unk_10045D1C, 4), (v21 = v22) != 0) )
{
v3 = 11;
v4 = (int)"Marvell_FBF";
v5 = lpBuffer;
v6 = 1;
do
{
if ( !v3 )
break;
v6 = *(_BYTE *)v5++ == *(_BYTE *)v4++;
--v3;
}
while ( v6 );
if ( v6 )
{
v37 = lpBuffer;
operator delete(lpBuffer);
return 1;
}
v20 = strncmp((const char *)lpBuffer, (const char *)&unk_10045D30, 4);
v19 = v20;
if ( v20 )
{
v18 = strncmp((const char *)lpBuffer, (const char *)&unk_10045D38, 4);// 1.8
v17 = v18;
if ( v18 )
{
v49 = 3;
sub_1000A790(&Dst, L"The version of CPB don't support been downloaded!");
sub_10001C40(v47, v49, (unsigned int)&Dst);
v34 = lpBuffer;
operator delete(lpBuffer);
return 0;
}
v35 = lpBuffer;
operator delete(lpBuffer);
v48 = sub_10004730(v27, hFile); // 1.8
*((_DWORD *)v27 + 195) = 2;
}
else // 1.7
{
v36 = lpBuffer;
operator delete(lpBuffer);
v48 = sub_10003BA0(hFile); // 1.7
*((_DWORD *)v27 + 195) = 1;
}
}
else
{
v38 = lpBuffer;
operator delete(lpBuffer);
v48 = sub_10003100(hFile);
*((_DWORD *)v27 + 195) = 1;
}
}
else
{
v39 = lpBuffer;
operator delete(lpBuffer);
v48 = sub_100026A0(hFile);
*((_DWORD *)v27 + 195) = 0;
}
}
else
{
v16 = strncmp((const char *)lpBuffer, (const char *)&unk_10045DA4, 4);// 1.7
v15 = v16;
if ( v16 )
{
v14 = strncmp((const char *)lpBuffer, (const char *)&unk_10045DAC, 4);// 1.8
v13 = v14;
if ( v14 )
{
v49 = 3;
sub_1000A790(&Dst, L"The version of CPB don't support been downloaded!!");
sub_10001C40(v47, v49, (unsigned int)&Dst);
v31 = lpBuffer;
operator delete(lpBuffer);
return 0;
}
v32 = lpBuffer;
operator delete(lpBuffer);
v48 = sub_10004730(v27, hFile); // 1.8头部数据校验
*((_DWORD *)v27 + 195) = 2;
}
else
{
v33 = lpBuffer;
operator delete(lpBuffer);
v48 = sub_10003BA0(hFile); // 1.7头部数据校验
*((_DWORD *)v27 + 195) = 1;
}
}
if ( !v48 )
{
CloseHandle(hFile);
hFile = 0;
return 0;
}
if ( v48 && *((_DWORD *)v27 + 194) )
{
sub_10001C40(1, 1, (unsigned int)L"Unzip files ...");
// 解压文件
v48 = sub_100055E0(hFile);
}
sub_1000A790(&Dst, L"Get FileList File... ");
sub_10001C40(v47, v49, (unsigned int)&Dst);
v48 = sub_100066A0(v27); // 抽取文件
std::ios_base::ios_base(&v46);
v55 = 0;
sub_1000AEA0(&unk_10045E6C);
LOBYTE(v55) = 1;
sub_1000B230((int)&v44, L"%s\\%s", (_BYTE)v27 + 4);
v9 = 0;
v8 = v7;
v30 = &v8;
v12 = sub_1000AEA0(L"PhoneInfo.yl");
sub_10011A60(&v44, v8, v9);
if ( v48 )
{
if ( *((_DWORD *)v27 + 206) )
{
sub_10001C40(1, 1, (unsigned int)L"Unzip police files ...");
v48 = sub_10007CD0(hFile);
}
}
v11 = *((_DWORD *)v27 + 195);
if ( v11 )
{
if ( v11 == 1 )
{
v9 = *((_DWORD *)v27 + 199);
sub_1000C410(v9);
}
else
{
if ( v11 != 2 )
{
v29 = 0;
LOBYTE(v55) = 0;
sub_1000B710(&v44);
v55 = -1;
std::locale::facet::_facet(&v46);
return v29;
}
v9 = *((_DWORD *)v27 + 200);
sub_1000C470(v9);
}
}
else
{
v9 = *((_DWORD *)v27 + 198);
sub_1000C3B0(v9);
}
CloseHandle(hFile);
hFile = 0;
v28 = v48;
LOBYTE(v55) = 0;
sub_1000B710(&v44);
v55 = -1;
std::locale::facet::_facet(&v46);
return v28;
}
// 010FBB6E |. FF70 58 PUSH DWORD PTR DS:[EAX+58]
// 010FBB71 |. FF50 54 CALL DWORD PTR DS:[EAX+54]
// 010F49CE |. FF55 FC CALL DWORD PTR SS:[EBP-4]
// 6A661406 B9 0CAC6E6A MOV ECX,dAndroid.6A6EAC0C
// 6A66140B E8 40FEFFFF CALL dAndroid.6A661250
// 6A661260 6A 00 PUSH 0
// 6A661262 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
// 6A661265 8B49 04 MOV ECX,DWORD PTR DS:[ECX+4]
// 6A661268 E8 93040000 CALL dAndroid.6A661700
// 6A661809 83C4 0C ADD ESP,0C
// 6A66180C 8BB5 ACF7FFFF MOV ESI,DWORD PTR SS:[EBP-854]
// 6A661812 83C6 08 ADD ESI,8
// 6A661815 8BBD ACF7FFFF MOV EDI,DWORD PTR SS:[EBP-854]
// 6A66181B 81C7 C8000000 ADD EDI,0C8
// 6A661821 B9 0E000000 MOV ECX,0E
// 6A661826 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
// 6A661828 8B95 ACF7FFFF MOV EDX,DWORD PTR SS:[EBP-854]
// 6A66182E 8B85 ACF7FFFF MOV EAX,DWORD PTR SS:[EBP-854]
// 6A661834 8B48 40 MOV ECX,DWORD PTR DS:[EAX+40]
// 6A661837 898A C4000000 MOV DWORD PTR DS:[EDX+C4],ECX
// 6A66183D 8B95 ACF7FFFF MOV EDX,DWORD PTR SS:[EBP-854]
// 6A661843 83C2 54 ADD EDX,54
// 6A661846 52 PUSH EDX
// 6A661847 8B85 ACF7FFFF MOV EAX,DWORD PTR SS:[EBP-854]
// 6A66184D 8B48 04 MOV ECX,DWORD PTR DS:[EAX+4]
// 6A661850 8B95 ACF7FFFF MOV EDX,DWORD PTR SS:[EBP-854]
// 6A661856 8B42 04 MOV EAX,DWORD PTR DS:[EDX+4]
// 6A661859 8B11 MOV EDX,DWORD PTR DS:[ECX]
// 6A66185B 8BC8 MOV ECX,EAX
// 6A66185D 8B42 04 MOV EAX,DWORD PTR DS:[EDX+4]
// 6A661860 FFD0 CALL EAX
signed int __thiscall sub_100015D0(void *pthis, wchar_t *Dst)
{
signed int result; // eax@2
void *v3; // [sp+4h] [bp-2Ch]@1
signed int v4; // [sp+1Ch] [bp-14h]@1
int v5; // [sp+20h] [bp-10h]@1
int v6; // [sp+2Ch] [bp-4h]@1
v3 = this;
v4 = 1;
sub_1000B850(&v5);
v6 = 0;
if ( sub_10001980(v3, (int)(Dst + 58)) )
{
if ( sub_10001C20(*((_DWORD *)Dst + 28)) )
{
if ( sub_1000C4D0((char *)v3 + 4) )
{
if ( *((_DWORD *)v3 + 158) || *((_DWORD *)v3 + 159) || *((_DWORD *)v3 + 160) || *((_DWORD *)v3 + 161) )
{
if ( *((_DWORD *)v3 + 158) )
{
sub_10001C40(1, 1, (unsigned int)L"Start to verify CPB file ...");
if ( unknown_libname_116((char *)v3 + 804) )
sub_1000B6D0((char *)v3 + 804);
v4 = sub_10001CD0(v3);
*((_DWORD *)v3 + 193) = unknown_libname_116((char *)v3 + 804) != 0;
if ( *((_DWORD *)v3 + 193) )
{
while ( v4 && unknown_libname_116((char *)v3 + 804) )
{
ATL::CStringT<wchar_t_StrTraitMFC<wchar_t_ATL::ChTraitsCRT<wchar_t>>>::operator_((LPCSTR)v3 + 676);
sub_1000E7B0(0);
sub_1000B230((int)((char *)v3 + 616), L"%s\\%s\\%s\\%s", (_BYTE)v3 + 4);
*((_DWORD *)v3 + 194) = 0;
v4 = sub_10001CD0(v3);
_LN24_3(0, 1);
}
}
if ( v4 )
sub_10001C40(1, 2, (unsigned int)L"Check CPB file ok");
}
if ( v4 )
{
if ( *((_DWORD *)v3 + 159) )
{
sub_10001C40(2, 1, (unsigned int)L"Start to verify GPS file ...");
v4 = sub_10008030(v3);
if ( v4 )
sub_10001C40(2, 2, (unsigned int)L"Check GPS file ok");
}
}
if ( v4 )
{
if ( *((_DWORD *)v3 + 160) )
{
sub_10001C40(3, 1, (unsigned int)L"Start to verify RES file ...");
v4 = unknown_libname_2(v3);
if ( v4 )
sub_10001C40(3, 2, (unsigned int)L"Check RES file ok");
}
}
if ( v4 )
{
if ( *((_DWORD *)v3 + 161) )
{
sub_10001C40(4, 1, (unsigned int)L"Start to verify APP file ...");
v4 = unknown_libname_2(v3);
if ( v4 )
sub_10001C40(4, 2, (unsigned int)L"Check APP file ok");
}
}
if ( v4 )
v4 = sub_10001B00(Dst);
v6 = -1;
sub_1000B710(&v5);
result = v4;
}
else
{
sub_10001C40(0, 3, (unsigned int)L"Please config your downloader task!");
v6 = -1;
sub_1000B710(&v5);
result = 0;
}
}
else
{
sub_10001C40(0, 3, (unsigned int)L"Get App Path fail");
v6 = -1;
sub_1000B710(&v5);
result = 0;
}
}
else
{
sub_10001C40(0, 3, (unsigned int)L"Set callback function fail");
v6 = -1;
sub_1000B710(&v5);
result = 0;
}
}
else
{
sub_10001C40(0, 3, (unsigned int)L"Set check config fail");
v6 = -1;
sub_1000B710(&v5);
result = 0;
}
return result;
}
int __thiscall sub_10008870(void *pthis, int a2)
{
int v2; // eax@3
int v4; // ecx@5
int v5; // ecx@9
int v6; // ecx@11
int v7; // eax@21
int v8; // eax@21
void *v9; // ecx@22
void *v10; // ecx@24
void *v11; // ecx@26
int v12; // eax@31
__int32 v13; // eax@31
int v14; // eax@31
__int32 v15; // eax@31
int v16; // eax@31
__int32 v17; // eax@31
int v18; // [sp-20h] [bp-AC8h]@5
void *v19; // [sp-1Ch] [bp-AC4h]@5
char *v20; // [sp-18h] [bp-AC0h]@5
char *v21; // [sp-14h] [bp-ABCh]@5
char *v22; // [sp-10h] [bp-AB8h]@5
char *v23; // [sp-Ch] [bp-AB4h]@5
int v24; // [sp-8h] [bp-AB0h]@5
unsigned int v25; // [sp-4h] [bp-AACh]@1
int v26; // [sp+0h] [bp-AA8h]@26
int v27; // [sp+4h] [bp-AA4h]@26
int v28; // [sp+8h] [bp-AA0h]@26
int v29; // [sp+Ch] [bp-A9Ch]@26
void *v30; // [sp+10h] [bp-A98h]@26
void *v31; // [sp+14h] [bp-A94h]@26
int v32; // [sp+18h] [bp-A90h]@24
int v33; // [sp+1Ch] [bp-A8Ch]@24
int v34; // [sp+20h] [bp-A88h]@24
int v35; // [sp+24h] [bp-A84h]@24
void *v36; // [sp+28h] [bp-A80h]@24
void *v37; // [sp+2Ch] [bp-A7Ch]@24
int v38; // [sp+30h] [bp-A78h]@22
int v39; // [sp+34h] [bp-A74h]@22
int v40; // [sp+38h] [bp-A70h]@22
int v41; // [sp+3Ch] [bp-A6Ch]@22
void *v42; // [sp+40h] [bp-A68h]@22
void *v43; // [sp+44h] [bp-A64h]@22
int v44; // [sp+48h] [bp-A60h]@11
int v45; // [sp+4Ch] [bp-A5Ch]@11
int v46; // [sp+50h] [bp-A58h]@11
int v47; // [sp+54h] [bp-A54h]@11
void *v48; // [sp+58h] [bp-A50h]@11
void *v49; // [sp+5Ch] [bp-A4Ch]@11
int v50; // [sp+60h] [bp-A48h]@9
int v51; // [sp+64h] [bp-A44h]@9
int v52; // [sp+68h] [bp-A40h]@9
int v53; // [sp+6Ch] [bp-A3Ch]@9
void *v54; // [sp+70h] [bp-A38h]@9
void *v55; // [sp+74h] [bp-A34h]@9
int v56; // [sp+78h] [bp-A30h]@5
int v57; // [sp+7Ch] [bp-A2Ch]@5
int v58; // [sp+80h] [bp-A28h]@5
int v59; // [sp+84h] [bp-A24h]@5
void *v60; // [sp+88h] [bp-A20h]@5
void *v61; // [sp+8Ch] [bp-A1Ch]@5
int v62; // [sp+90h] [bp-A18h]@4
int v63; // [sp+94h] [bp-A14h]@4
int v64; // [sp+98h] [bp-A10h]@3
int v65; // [sp+9Ch] [bp-A0Ch]@3
void *v66; // [sp+A0h] [bp-A08h]@1
int v67; // [sp+A4h] [bp-A04h]@31
int v68; // [sp+A8h] [bp-A00h]@27
int *v69; // [sp+ACh] [bp-9FCh]@26
void **v70; // [sp+B0h] [bp-9F8h]@26
char **v71; // [sp+B4h] [bp-9F4h]@26
char v72; // [sp+B8h] [bp-9F0h]@26
char v73; // [sp+BCh] [bp-9ECh]@26
bool v74; // [sp+C3h] [bp-9E5h]@26
int v75; // [sp+C4h] [bp-9E4h]@25
int *v76; // [sp+C8h] [bp-9E0h]@24
void **v77; // [sp+CCh] [bp-9DCh]@24
char **v78; // [sp+D0h] [bp-9D8h]@24
char v79; // [sp+D4h] [bp-9D4h]@24
char v80; // [sp+D8h] [bp-9D0h]@24
bool v81; // [sp+DFh] [bp-9C9h]@24
int v82; // [sp+E0h] [bp-9C8h]@23
int *v83; // [sp+E4h] [bp-9C4h]@22
void **v84; // [sp+E8h] [bp-9C0h]@22
char **v85; // [sp+ECh] [bp-9BCh]@22
char v86; // [sp+F0h] [bp-9B8h]@22
char v87; // [sp+F4h] [bp-9B4h]@22
bool v88; // [sp+FBh] [bp-9ADh]@22
int v89; // [sp+FCh] [bp-9ACh]@18
char v90; // [sp+100h] [bp-9A8h]@17
char v91; // [sp+104h] [bp-9A4h]@17
bool v92; // [sp+10Bh] [bp-99Dh]@17
int v93; // [sp+10Ch] [bp-99Ch]@16
char v94; // [sp+110h] [bp-998h]@15
bool v95; // [sp+117h] [bp-991h]@15
int v96; // [sp+118h] [bp-990h]@12
int *v97; // [sp+11Ch] [bp-98Ch]@11
void **v98; // [sp+120h] [bp-988h]@11
char **v99; // [sp+124h] [bp-984h]@11
char v100; // [sp+128h] [bp-980h]@11
char v101; // [sp+12Ch] [bp-97Ch]@11
bool v102; // [sp+133h] [bp-975h]@11
int v103; // [sp+134h] [bp-974h]@10
int *v104; // [sp+138h] [bp-970h]@9
void **v105; // [sp+13Ch] [bp-96Ch]@9
char **v106; // [sp+140h] [bp-968h]@9
char v107; // [sp+144h] [bp-964h]@9
char v108; // [sp+148h] [bp-960h]@9
bool v109; // [sp+14Fh] [bp-959h]@9
int v110; // [sp+150h] [bp-958h]@8
int *v111; // [sp+154h] [bp-954h]@5
void **v112; // [sp+158h] [bp-950h]@5
char **v113; // [sp+15Ch] [bp-94Ch]@5
char v114; // [sp+160h] [bp-948h]@5
char v115; // [sp+164h] [bp-944h]@5
bool v116; // [sp+16Bh] [bp-93Dh]@5
char v117; // [sp+170h] [bp-938h]@5
char v118; // [sp+174h] [bp-934h]@5
char v119; // [sp+178h] [bp-930h]@5
int v120; // [sp+17Ch] [bp-92Ch]@4
int v121; // [sp+180h] [bp-928h]@3
char v122; // [sp+184h] [bp-924h]@1
int v123; // [sp+188h] [bp-920h]@1
char v124; // [sp+18Ch] [bp-91Ch]@15
char v125; // [sp+190h] [bp-918h]@15
unsigned int i; // [sp+1A4h] [bp-904h]@19
unsigned int v127; // [sp+1A8h] [bp-900h]@19
int v128; // [sp+1ACh] [bp-8FCh]@3
char v129; // [sp+1B0h] [bp-8F8h]@1
char v130; // [sp+1B4h] [bp-8F4h]@1
char v131; // [sp+214h] [bp-894h]@1
char v132; // [sp+278h] [bp-830h]@1
wchar_t Dst; // [sp+27Ch] [bp-82Ch]@6
unsigned int v134; // [sp+A80h] [bp-28h]@1
wchar_t **v135; // [sp+A84h] [bp-24h]@31
char v136; // [sp+A88h] [bp-20h]@1
int v137; // [sp+A8Ch] [bp-1Ch]@1
__int32 v138; // [sp+A90h] [bp-18h]@31
char v139; // [sp+A94h] [bp-14h]@1
char v140; // [sp+A98h] [bp-10h]@1
int v141; // [sp+AA4h] [bp-4h]@1
int v142; // [sp+AA8h] [bp+0h]@1
v134 = (unsigned int)&v142 ^ __security_cookie;
v25 = (unsigned int)&v142 ^ __security_cookie;
v66 = pthis;
v141 = 0;
sub_1000B850(&v137);
LOBYTE(v141) = 1;
sub_1000B850(&v139);
LOBYTE(v141) = 2;
sub_1000B850(&v136);
LOBYTE(v141) = 3;
sub_1000B850(&v129);
LOBYTE(v141) = 4;
sub_1000B850(&v140);
LOBYTE(v141) = 5;
sub_1000B850(&v132);
LOBYTE(v141) = 6;
std::locale::_Locimp::__Locimp(&v130);
LOBYTE(v141) = 7;
std::locale::_Locimp::__Locimp(&v131);
LOBYTE(v141) = 8;
sub_1000AEA0(L"res://dProdRes.dll//DEVICE_CONFIG.xml");
LOBYTE(v141) = 9;
v123 = sub_1000CC90(&v122, &v137);
LOBYTE(v141) = 8;
sub_1000B710(&v122);
if ( !v123 )
{
swprintf_s(&Dst, 0x104u, L"LoadXMLFile fail:%s", v137);
sub_10001C40(0, 3, (unsigned int)&Dst);
LOBYTE(v141) = 7;
sub_1000CC50(&v131);
LOBYTE(v141) = 6;
sub_1000CC50(&v130);
LOBYTE(v141) = 5;
sub_1000B710(&v132);
LOBYTE(v141) = 4;
sub_1000B710(&v140);
LOBYTE(v141) = 3;
sub_1000B710(&v129);
LOBYTE(v141) = 2;
sub_1000B710(&v136);
LOBYTE(v141) = 1;
sub_1000B710(&v139);
LOBYTE(v141) = 0;
sub_1000B710(&v137);
v141 = -1;
sub_1000B710(&a2);
return 0;
}
if ( sub_1000A220(&a2, 43, 0) == -1 )
{
v63 = sub_1000A400((int)&v120, L"CP", (int)&a2);
v62 = v63;
LOBYTE(v141) = 12;
sub_1000AA30(v63);
LOBYTE(v141) = 8;
sub_1000B710(&v120);
}
else
{
sub_1000B850(&v128);
LOBYTE(v141) = 10;
sub_1000AA30(&a2);
v2 = sub_1000A310(43);
sub_1000A160(&v128, v2, 260);
sub_1000A0E0(L"Plus");
v65 = sub_1000A400((int)&v121, L"CP", (int)&v128);
v64 = v65;
LOBYTE(v141) = 11;
sub_1000AA30(v65);
LOBYTE(v141) = 10;
sub_1000B710(&v121);
LOBYTE(v141) = 8;
sub_1000B710(&v128);
}
sub_1000AEA0(L"Index");
LOBYTE(v141) = 13;
sub_1000CF80(&v140, &v119, &v132, &v137);
LOBYTE(v141) = 8;
sub_1000B710(&v119);
sub_1000B230((int)((char *)v66 + 612), L"%s\\%s\\%s.xml", (_BYTE)v66 + 4);
sub_1000AEA0(L"name");
LOBYTE(v141) = 14;
sub_1000AEA0(L"Phone");
LOBYTE(v141) = 15;
sub_1000D3B0((char *)v66 + 612, &v117, &v118, &v132, &v137);
LOBYTE(v141) = 14;
sub_1000B710(&v117);
LOBYTE(v141) = 8;
sub_1000B710(&v118);
sub_1000AEA0(L"SolutionType");
LOBYTE(v141) = 16;
sub_1000AEA0(L"ProjectInfo");
LOBYTE(v141) = 17;
v24 = (int)&v137;
v23 = &v139;
v22 = &v115;
v21 = &v114;
v20 = &v115;
v113 = &v20;
v61 = sub_1000ABC0(&v20, (int)&v132);
v60 = v61;
LOBYTE(v141) = 18;
v19 = v61;
v112 = &v19;
v59 = sub_1000AEA0(L"name");
v58 = v59;
LOBYTE(v141) = 19;
v18 = v4;
v111 = &v18;
v57 = sub_1000AEA0(L"Phone");
LOBYTE(v141) = 17;
v56 = sub_1000D1F0(v18, (char)v19, (char)v20, v21, v22, v23, v24);
v116 = v56 == 0;
LOBYTE(v141) = 16;
sub_1000B710(&v114);
LOBYTE(v141) = 8;
sub_1000B710(&v115);
if ( v116 )
{
v24 = v137;
swprintf_s(&Dst, 0x104u, L"Get solution attribute fail:%s", v137);
sub_10001C40(0, 3, (unsigned int)&Dst);
CDaoIndexFieldInfo::_CDaoIndexFieldInfo(&v130);
v110 = 0;
LOBYTE(v141) = 7;
sub_1000CC50(&v131);
LOBYTE(v141) = 6;
sub_1000CC50(&v130);
LOBYTE(v141) = 5;
sub_1000B710(&v132);
LOBYTE(v141) = 4;
sub_1000B710(&v140);
LOBYTE(v141) = 3;
sub_1000B710(&v129);
LOBYTE(v141) = 2;
sub_1000B710(&v136);
LOBYTE(v141) = 1;
sub_1000B710(&v139);
LOBYTE(v141) = 0;
sub_1000B710(&v137);
v141 = -1;
sub_1000B710(&a2);
return v110;
}
sub_1000AEA0(L"ChipsetType");
LOBYTE(v141) = 20;
sub_1000AEA0(L"ProjectInfo");
LOBYTE(v141) = 21;
v24 = (int)&v137;
v23 = &v136;
v22 = &v108;
v21 = &v107;
v20 = &v108;
v106 = &v20;
v55 = sub_1000ABC0(&v20, (int)&v132);
v54 = v55;
LOBYTE(v141) = 22;
v19 = v55;
v105 = &v19;
v53 = sub_1000AEA0(L"name");
v52 = v53;
LOBYTE(v141) = 23;
v18 = v5;
v104 = &v18;
v51 = sub_1000AEA0(L"Phone");
LOBYTE(v141) = 21;
v50 = sub_1000D1F0(v18, (char)v19, (char)v20, v21, v22, v23, v24);
v109 = v50 == 0;
LOBYTE(v141) = 20;
sub_1000B710(&v107);
LOBYTE(v141) = 8;
sub_1000B710(&v108);
if ( v109 )
{
v24 = v137;
swprintf_s(&Dst, 0x104u, L"Get chipset attribute fail:%s", v137);
sub_10001C40(0, 3, (unsigned int)&Dst);
CDaoIndexFieldInfo::_CDaoIndexFieldInfo(&v130);
v103 = 0;
LOBYTE(v141) = 7;
sub_1000CC50(&v131);
LOBYTE(v141) = 6;
sub_1000CC50(&v130);
LOBYTE(v141) = 5;
sub_1000B710(&v132);
LOBYTE(v141) = 4;
sub_1000B710(&v140);
LOBYTE(v141) = 3;
sub_1000B710(&v129);
LOBYTE(v141) = 2;
sub_1000B710(&v136);
LOBYTE(v141) = 1;
sub_1000B710(&v139);
LOBYTE(v141) = 0;
sub_1000B710(&v137);
v141 = -1;
sub_1000B710(&a2);
return v103;
}
sub_1000AEA0(L"UnzipCPB");
LOBYTE(v141) = 24;
sub_1000AEA0(L"Download");
LOBYTE(v141) = 25;
v24 = (int)&v137;
v23 = &v129;
v22 = &v101;
v21 = &v100;
v20 = &v101;
v99 = &v20;
v49 = sub_1000ABC0(&v20, (int)&v132);
v48 = v49;
LOBYTE(v141) = 26;
v19 = v49;
v98 = &v19;
v47 = sub_1000AEA0(L"name");
v46 = v47;
LOBYTE(v141) = 27;
v18 = v6;
v97 = &v18;
v45 = sub_1000AEA0(L"Phone");
LOBYTE(v141) = 25;
v44 = sub_1000D1F0(v18, (char)v19, (char)v20, v21, v22, v23, v24);
v102 = v44 == 0;
LOBYTE(v141) = 24;
sub_1000B710(&v100);
LOBYTE(v141) = 8;
sub_1000B710(&v101);
if ( v102 )
{
v24 = v137;
swprintf_s(&Dst, 0x104u, L"Get unzip attribute fail:%s", v137);
sub_10001C40(0, 3, (unsigned int)&Dst);
CDaoIndexFieldInfo::_CDaoIndexFieldInfo(&v130);
v96 = 0;
LOBYTE(v141) = 7;
sub_1000CC50(&v131);
LOBYTE(v141) = 6;
sub_1000CC50(&v130);
LOBYTE(v141) = 5;
sub_1000B710(&v132);
LOBYTE(v141) = 4;
sub_1000B710(&v140);
LOBYTE(v141) = 3;
sub_1000B710(&v129);
LOBYTE(v141) = 2;
sub_1000B710(&v136);
LOBYTE(v141) = 1;
sub_1000B710(&v139);
LOBYTE(v141) = 0;
sub_1000B710(&v137);
v141 = -1;
sub_1000B710(&a2);
return v96;
}
CDaoIndexFieldInfo::_CDaoIndexFieldInfo(&v130);
if ( *((_DWORD *)v66 + 157) == 3 || *((_DWORD *)v66 + 157) == 2 )
{
sub_1001F854(&v125);
LOBYTE(v141) = 28;
sub_1000B850(&v124);
LOBYTE(v141) = 29;
sub_1000B6D0(&v125);
sub_1000AEA0(L"res://dProdRes.dll//YGDP_CONFIG.xml");
LOBYTE(v141) = 30;
v95 = sub_1000CC90(&v94, &v137) == 0;
LOBYTE(v141) = 29;
sub_1000B710(&v94);
if ( v95 )
{
v24 = v137;
swprintf_s(&Dst, 0x104u, L"LoadYGDPXMLFile fail:%s", v137);
sub_10001C40(0, 3, (unsigned int)&Dst);
v93 = 0;
LOBYTE(v141) = 28;
sub_1000B710(&v124);
LOBYTE(v141) = 8;
CStringArray::_CStringArray(&v125);
LOBYTE(v141) = 7;
sub_1000CC50(&v131);
LOBYTE(v141) = 6;
sub_1000CC50(&v130);
LOBYTE(v141) = 5;
sub_1000B710(&v132);
LOBYTE(v141) = 4;
sub_1000B710(&v140);
LOBYTE(v141) = 3;
sub_1000B710(&v129);
LOBYTE(v141) = 2;
sub_1000B710(&v136);
LOBYTE(v141) = 1;
sub_1000B710(&v139);
LOBYTE(v141) = 0;
sub_1000B710(&v137);
v141 = -1;
sub_1000B710(&a2);
return v93;
}
sub_1000AEA0(L"name");
LOBYTE(v141) = 31;
sub_1000AEA0(L"SwitchPhone");
LOBYTE(v141) = 32;
v92 = sub_1000D0B0(&v90, &v91, &v125, &v137) == 0;
LOBYTE(v141) = 31;
sub_1000B710(&v90);
LOBYTE(v141) = 29;
sub_1000B710(&v91);
if ( v92 )
{
v24 = v137;
swprintf_s(&Dst, 0x104u, L"Get SwitchPhone attribute fail:%s", v137);
sub_10001C40(0, 3, (unsigned int)&Dst);
CDaoIndexFieldInfo::_CDaoIndexFieldInfo(&v131);
v89 = 0;
LOBYTE(v141) = 28;
sub_1000B710(&v124);
LOBYTE(v141) = 8;
CStringArray::_CStringArray(&v125);
LOBYTE(v141) = 7;
sub_1000CC50(&v131);
LOBYTE(v141) = 6;
sub_1000CC50(&v130);
LOBYTE(v141) = 5;
sub_1000B710(&v132);
LOBYTE(v141) = 4;
sub_1000B710(&v140);
LOBYTE(v141) = 3;
sub_1000B710(&v129);
LOBYTE(v141) = 2;
sub_1000B710(&v136);
LOBYTE(v141) = 1;
sub_1000B710(&v139);
LOBYTE(v141) = 0;
sub_1000B710(&v137);
v141 = -1;
sub_1000B710(&a2);
return v89;
}
v127 = unknown_libname_116(&v125);
for ( i = 0; i < v127; ++i )
{
v7 = sub_1000E7B0(i);
sub_1000AA30(v7);
v8 = unknown_libname_123(&a2);
if ( !sub_1000A100(&v124, v8) )
{
sub_1000AEA0(L"SolutionType");
LOBYTE(v141) = 33;
sub_1000AEA0(L"ProjectInfo");
LOBYTE(v141) = 34;
v24 = (int)&v137;
v23 = &v139;
v22 = &v87;
v21 = &v86;
v20 = &v139;
v85 = &v20;
v43 = sub_1000ABC0(&v20, (int)&a2);
v42 = v43;
LOBYTE(v141) = 35;
v19 = v9;
v84 = &v19;
v41 = sub_1000AEA0(L"name");
v40 = v41;
LOBYTE(v141) = 36;
v18 = v41;
v83 = &v18;
v39 = sub_1000AEA0(L"SwitchPhone");
LOBYTE(v141) = 34;
v38 = sub_1000D1F0(v18, (char)v19, (char)v20, v21, v22, v23, v24);
v88 = v38 == 0;
LOBYTE(v141) = 33;
sub_1000B710(&v86);
LOBYTE(v141) = 29;
sub_1000B710(&v87);
if ( v88 )
{
v24 = v137;
swprintf_s(&Dst, 0x104u, L"Get switch solution attribute fail:%s", v137);
sub_10001C40(0, 3, (unsigned int)&Dst);
CDaoIndexFieldInfo::_CDaoIndexFieldInfo(&v131);
v82 = 0;
LOBYTE(v141) = 28;
sub_1000B710(&v124);
LOBYTE(v141) = 8;
CStringArray::_CStringArray(&v125);
LOBYTE(v141) = 7;
sub_1000CC50(&v131);
LOBYTE(v141) = 6;
sub_1000CC50(&v130);
LOBYTE(v141) = 5;
sub_1000B710(&v132);
LOBYTE(v141) = 4;
sub_1000B710(&v140);
LOBYTE(v141) = 3;
sub_1000B710(&v129);
LOBYTE(v141) = 2;
sub_1000B710(&v136);
LOBYTE(v141) = 1;
sub_1000B710(&v139);
LOBYTE(v141) = 0;
sub_1000B710(&v137);
v141 = -1;
sub_1000B710(&a2);
return v82;
}
sub_1000AEA0(L"ChipsetType");
LOBYTE(v141) = 37;
sub_1000AEA0(L"ProjectInfo");
LOBYTE(v141) = 38;
v24 = (int)&v137;
v23 = &v136;
v22 = &v80;
v21 = &v79;
v20 = &v79;
v78 = &v20;
v37 = sub_1000ABC0(&v20, (int)&a2);
v36 = v37;
LOBYTE(v141) = 39;
v19 = v10;
v77 = &v19;
v35 = sub_1000AEA0(L"name");
v34 = v35;
LOBYTE(v141) = 40;
v18 = v35;
v76 = &v18;
v33 = sub_1000AEA0(L"SwitchPhone");
LOBYTE(v141) = 38;
v32 = sub_1000D1F0(v18, (char)v19, (char)v20, v21, v22, v23, v24);
v81 = v32 == 0;
LOBYTE(v141) = 37;
sub_1000B710(&v79);
LOBYTE(v141) = 29;
sub_1000B710(&v80);
if ( v81 )
{
v24 = v137;
swprintf_s(&Dst, 0x104u, L"Get switch chipset attribute fail:%s", v137);
sub_10001C40(0, 3, (unsigned int)&Dst);
CDaoIndexFieldInfo::_CDaoIndexFieldInfo(&v131);
v75 = 0;
LOBYTE(v141) = 28;
sub_1000B710(&v124);
LOBYTE(v141) = 8;
CStringArray::_CStringArray(&v125);
LOBYTE(v141) = 7;
sub_1000CC50(&v131);
LOBYTE(v141) = 6;
sub_1000CC50(&v130);
LOBYTE(v141) = 5;
sub_1000B710(&v132);
LOBYTE(v141) = 4;
sub_1000B710(&v140);
LOBYTE(v141) = 3;
sub_1000B710(&v129);
LOBYTE(v141) = 2;
sub_1000B710(&v136);
LOBYTE(v141) = 1;
sub_1000B710(&v139);
LOBYTE(v141) = 0;
sub_1000B710(&v137);
v141 = -1;
sub_1000B710(&a2);
return v75;
}
sub_1000AEA0(L"UnzipCPB");
LOBYTE(v141) = 41;
sub_1000AEA0(L"Download");
LOBYTE(v141) = 42;
v24 = (int)&v137;
v23 = &v129;
v22 = &v73;
v21 = &v72;
v20 = &v72;
v71 = &v20;
v31 = sub_1000ABC0(&v20, (int)&a2);
v30 = v31;
LOBYTE(v141) = 43;
v19 = v11;
v70 = &v19;
v29 = sub_1000AEA0(L"name");
v28 = v29;
LOBYTE(v141) = 44;
v18 = v29;
v69 = &v18;
v27 = sub_1000AEA0(L"SwitchPhone");
LOBYTE(v141) = 42;
v26 = sub_1000D1F0(v18, (char)v19, (char)v20, v21, v22, v23, v24);
v74 = v26 == 0;
LOBYTE(v141) = 41;
sub_1000B710(&v72);
LOBYTE(v141) = 29;
sub_1000B710(&v73);
if ( v74 )
{
v24 = v137;
swprintf_s(&Dst, 0x104u, L"Get switch unzip attribute fail:%s", v137);
sub_10001C40(0, 3, (unsigned int)&Dst);
CDaoIndexFieldInfo::_CDaoIndexFieldInfo(&v131);
v68 = 0;
LOBYTE(v141) = 28;
sub_1000B710(&v124);
LOBYTE(v141) = 8;
CStringArray::_CStringArray(&v125);
LOBYTE(v141) = 7;
sub_1000CC50(&v131);
LOBYTE(v141) = 6;
sub_1000CC50(&v130);
LOBYTE(v141) = 5;
sub_1000B710(&v132);
LOBYTE(v141) = 4;
sub_1000B710(&v140);
LOBYTE(v141) = 3;
sub_1000B710(&v129);
LOBYTE(v141) = 2;
sub_1000B710(&v136);
LOBYTE(v141) = 1;
sub_1000B710(&v139);
LOBYTE(v141) = 0;
sub_1000B710(&v137);
v141 = -1;
sub_1000B710(&a2);
return v68;
}
break;
}
}
CDaoIndexFieldInfo::_CDaoIndexFieldInfo(&v131);
LOBYTE(v141) = 28;
sub_1000B710(&v124);
LOBYTE(v141) = 8;
CStringArray::_CStringArray(&v125);
}
v135 = 0;
v24 = 10;
v23 = 0;
v12 = unknown_libname_123(&v139);
v13 = wcstol((const wchar_t *)v12, (wchar_t **)v23, v24);
v138 = v13;
*((_DWORD *)v66 + 167) = v13;
v24 = 10;
v23 = (char *)v135;
v14 = unknown_libname_123(&v136);
v15 = wcstol((const wchar_t *)v14, (wchar_t **)v23, v24);
v138 = v15;
*((_DWORD *)v66 + 168) = v15;
v24 = 10;
v23 = (char *)v135;
v16 = unknown_libname_123(&v129);
v17 = wcstol((const wchar_t *)v16, (wchar_t **)v23, v24);
v138 = v17;
*((_DWORD *)v66 + 194) = v17 != 0;
v67 = 1;
LOBYTE(v141) = 7;
sub_1000CC50(&v131);
LOBYTE(v141) = 6;
sub_1000CC50(&v130);
LOBYTE(v141) = 5;
sub_1000B710(&v132);
LOBYTE(v141) = 4;
sub_1000B710(&v140);
LOBYTE(v141) = 3;
sub_1000B710(&v129);
LOBYTE(v141) = 2;
sub_1000B710(&v136);
LOBYTE(v141) = 1;
sub_1000B710(&v139);
LOBYTE(v141) = 0;
sub_1000B710(&v137);
v141 = -1;
sub_1000B710(&a2);
return v67;
}
0 0
- cpd
- cpd
- CPD源代码
- cpd.exe
- Tree CPD
- apache commons fileupload cpd报告
- CPD算法源码的研究
- 代码检测工具箱——checkstyle、findbugs、pmd-cpd
- 代码检测工具箱——checkstyle、findbugs、pmd-cpd
- CPD配准算法-matlab工具包的使用
- fullbnt使用中bnet中CPD查看方法与输入证据后节点查询方法
- iOS开发 jenkins(DRYPlugin)+PMD/CPD 检测重复代码
- 获取CPS,CPA,CPD等非SDK联运渠道的逻辑渠道号
- 酷传上线Super CPD,毫秒竞价是如何做到的
- 互联网及移动广告常见的几种计费方式,包括CPC、CPM、CPA、CPD、CPS、dCPM
- cpd
- 整数数据唯一(去重)排序
- swing常用组件
- 水滴微信平台bug
- java.lang.Excetion,java.lang.RuntimeException,java.lang.Error有什么区别?
- cpd
- 建立Tahi IPv6测试环境
- ArcEngine java 如何创建自定义菜单、环境菜单、调色板以及动态菜单项
- 批处理命令
- Spring Data for Mongodb
- SSH框架
- jsp页面绝对路径的处理
- Tomcat内存设置详解
- (初稿)SQL Server 复制(Replication)系列(2)——事务复制搭建