InpOut32 CSharpExample.cs hacking
/************************************************************************************
* InpOut32 CSharpExample.cs hacking
* 说明:
* 跟一下CSharpExample.cs中InpOut32怎么使用。
*
* 2017-6-6 深圳 龙华樟坑村 曾剑锋
***********************************************************************************/ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; using System.Runtime.InteropServices; namespace InpOut32.Net
{
public partial class CSharpExample : Form
{ /**
* 加载dll相关处理函数
*/
[DllImport("inpout32.dll")]
private static extern UInt32 IsInpOutDriverOpen();
[DllImport("inpout32.dll")]
private static extern void Out32(short PortAddress, short Data);
[DllImport("inpout32.dll")]
private static extern char Inp32(short PortAddress); [DllImport("inpout32.dll")]
private static extern void DlPortWritePortUshort(short PortAddress, ushort Data);
[DllImport("inpout32.dll")]
private static extern ushort DlPortReadPortUshort(short PortAddress); [DllImport("inpout32.dll")]
private static extern void DlPortWritePortUlong(int PortAddress, uint Data);
[DllImport("inpout32.dll")]
private static extern uint DlPortReadPortUlong(int PortAddress); [DllImport("inpoutx64.dll")]
private static extern bool GetPhysLong(ref int PortAddress, ref uint Data);
[DllImport("inpoutx64.dll")]
private static extern bool SetPhysLong(ref int PortAddress, ref uint Data); [DllImport("inpoutx64.dll", EntryPoint="IsInpOutDriverOpen")]
private static extern UInt32 IsInpOutDriverOpen_x64();
[DllImport("inpoutx64.dll", EntryPoint = "Out32")]
private static extern void Out32_x64(short PortAddress, short Data);
[DllImport("inpoutx64.dll", EntryPoint = "Inp32")]
private static extern char Inp32_x64(short PortAddress); [DllImport("inpoutx64.dll", EntryPoint = "DlPortWritePortUshort")]
private static extern void DlPortWritePortUshort_x64(short PortAddress, ushort Data);
[DllImport("inpoutx64.dll", EntryPoint = "DlPortReadPortUshort")]
private static extern ushort DlPortReadPortUshort_x64(short PortAddress); [DllImport("inpoutx64.dll", EntryPoint = "DlPortWritePortUlong")]
private static extern void DlPortWritePortUlong_x64(int PortAddress, uint Data);
[DllImport("inpoutx64.dll", EntryPoint = "DlPortReadPortUlong")]
private static extern uint DlPortReadPortUlong_x64(int PortAddress); [DllImport("inpoutx64.dll", EntryPoint = "GetPhysLong")]
private static extern bool GetPhysLong_x64(ref int PortAddress, ref uint Data);
[DllImport("inpoutx64.dll", EntryPoint = "SetPhysLong")]
private static extern bool SetPhysLong_x64(ref int PortAddress, ref uint Data); bool m_bX64 = false; public CSharpExample()
{
InitializeComponent();
try
{
uint nResult = ;
try
{
// 打开32位驱动,如果失败了,会引发异常,再加载64位驱动
nResult = IsInpOutDriverOpen(); Console.WriteLine("nResult1: " + nResult);
}
catch (BadImageFormatException)
{
Console.WriteLine("nResult2: " + nResult);
nResult = IsInpOutDriverOpen_x64();
if (nResult != )
m_bX64 = true; Console.WriteLine("nResult2: " + nResult); } // 加载32、64位驱动均失败了,就给出相关提示信息
if (nResult == )
{
lblMessage.Text = "Unable to open InpOut32 driver";
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
button5.Enabled = false;
button6.Enabled = false;
button7.Enabled = false;
}
}
catch (DllNotFoundException ex) // dll查找是失败异常
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
lblMessage.Text = "Unable to find InpOut32.dll";
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
button5.Enabled = false;
button6.Enabled = false;
button7.Enabled = false;
}
} private void button1_Click(object sender, EventArgs e)
{
try
{
// 字符串转16位short类型整数
short iPort = Convert.ToInt16(textBox1.Text); char c;
if (m_bX64)
c = Inp32_x64(iPort);
else
c = Inp32(iPort); // 将读取的数据显示出来
textBox2.Text = Convert.ToInt32(c).ToString();
}
catch (Exception ex)
{
MessageBox.Show("An error occured:\n" + ex.Message);
}
} private void button2_Click(object sender, EventArgs e)
{
try
{
// 字符串转16位short类型整数
short iPort = Convert.ToInt16(textBox1.Text);
short iData = Convert.ToInt16(textBox2.Text);
textBox2.Text = "";
if (m_bX64)
Out32_x64(iPort, iData);
else
Out32(iPort, iData); }
catch (Exception ex)
{
MessageBox.Show("An error occured:\n" + ex.Message);
}
} private void button3_Click(object sender, EventArgs e)
{
try
{
short iPort = Convert.ToInt16(textBox1.Text);
ushort s;
if (m_bX64)
s = DlPortReadPortUshort_x64(iPort);
else
s = DlPortReadPortUshort(iPort); textBox2.Text = Convert.ToUInt16(s).ToString();
}
catch (Exception ex)
{
MessageBox.Show("An error occured:\n" + ex.Message);
}
} private void button4_Click(object sender, EventArgs e)
{
try
{
int nPort = Convert.ToInt32(textBox1.Text); uint l;
if (m_bX64)
l = DlPortReadPortUlong_x64(nPort);
else
l = DlPortReadPortUlong(nPort); textBox2.Text = l.ToString();
}
catch (Exception ex)
{
MessageBox.Show("An error occured:\n" + ex.Message);
}
} private void button5_Click(object sender, EventArgs e)
{
try
{
short sPort = Convert.ToInt16(textBox1.Text);
ushort iData = Convert.ToUInt16(textBox2.Text);
textBox2.Text = ""; if (m_bX64)
DlPortWritePortUshort_x64(sPort, iData);
else
DlPortWritePortUshort(sPort, iData);
}
catch (Exception ex)
{
MessageBox.Show("An error occured:\n" + ex.Message);
}
} private void button6_Click(object sender, EventArgs e)
{
try
{
int nPort = Convert.ToInt32(textBox1.Text);
uint nData = Convert.ToUInt32(textBox2.Text);
textBox2.Text = "";
if (m_bX64)
DlPortWritePortUlong_x64(nPort, nData);
else
DlPortWritePortUlong(nPort, nData);
}
catch (Exception ex)
{
MessageBox.Show("An error occured:\n" + ex.Message);
}
} // 参考:InpOut32 InputTest.cpp hacking
// http://www.cnblogs.com/zengjfgit/p/6945758.html
private void Beep(uint freq)
{
if (m_bX64)
{
Out32_x64(0x43, 0xB6);
Out32_x64(0x42, (byte)(freq & 0xFF));
Out32_x64(0x42, (byte)(freq >> ));
System.Threading.Thread.Sleep();
Out32_x64(0x61, (byte)(Convert.ToByte(Inp32_x64(0x61)) | 0x03));
}
else
{
Out32(0x43, 0xB6);
Out32(0x42, (byte)(freq & 0xFF));
Out32(0x42, (byte)(freq >> ));
System.Threading.Thread.Sleep();
Out32(0x61, (byte)(Convert.ToByte(Inp32(0x61)) | 0x03));
}
} private void StopBeep()
{
if (m_bX64)
Out32_x64(0x61, (byte)(Convert.ToByte(Inp32_x64(0x61)) & 0xFC));
else
Out32(0x61, (byte)(Convert.ToByte(Inp32(0x61)) & 0xFC));
} private void CSharpExample_Load(object sender, EventArgs e)
{
// 启动的时候相当于单击一次
button7_Click(this, null);
} private void ThreadBeeper()
{
for (uint i = ; i < ; i += )
{
uint freq = / i; // 440Hz
Beep(freq);
}
StopBeep();
} private void button7_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadBeeper));
t.Start();
}
}
}
InpOut32 CSharpExample.cs hacking的更多相关文章
- InpOut32 InputTest.cpp hacking
/************************************************************************************ * InpOut32 Inp ...
- Rootkit Hacking Technology && Defence Strategy Research
目录 . The Purpose Of Rootkit . Syscall Hijack . LKM Module Hidden . Network Communication Hidden . Fi ...
- 我的美国(北美)计算机CS实习面试经验分享
过去的一年多里,参加了一些面试,虽然面过的公司不多,但都从头一直走到尾.毕竟自己也是花了大量的时间和精力在这一场场的面试里.所以,就絮叨下自己的一些经验,希望能给在美国找实习找工作的同学们提供一点点帮 ...
- I.MX6 ar1020 SPI device driver hacking
/************************************************************************************ * I.MX6 ar1020 ...
- OK335xS GPMC nand device register hacking
/********************************************************************************* * OK335xS GPMC na ...
- RFID Hacking–资源大合集
原文: http://www.freebuf.com/news/others/605.html http://www.proxmark.org/forum/index.php RFID破解神器官方论坛 ...
- Hacking/Penetrating tester bookmark collection
Blogs http://carnal0wnage.blogspot.com/ http://www.mcgrewsecurity.com/ http://www.gnucitizen.org/blo ...
- 斯坦福CS课程列表
http://exploredegrees.stanford.edu/coursedescriptions/cs/ CS 101. Introduction to Computing Principl ...
- [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute
剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...
随机推荐
- Django:学习笔记(2)——创建第一个应用
Django:学习笔记(2)——创建第一个应用 创建应用 在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定.Django 自带一个工具,可以帮你生成应用的基础目录结构, ...
- EasyUI:datagrid控件简介
EasyUI:datagrid控件简介 1,水平滚动条属性: //显示滚动条 fitColumns:false //不显示滚动条 fitColumns:true
- ASP.NET MVC Select无限级分类选择下拉框
1:读取父级下的所有子类别 *ViewBag.ParentItemList:不能与ParentId相同 private void ParentDropDownList() { List<SAS. ...
- 64位机的pl/sql不安装32位oracle的连接方式
第一步:下载即时客户端包 在Oralce官方网站上下载Oracle Instantclient Basic package.地址如下:http://www.oracle.com/technetw ...
- Eclipse 添加JSP模板
0.环境 Eclipse IDE for Java EE Developers (4.3.2) win8.1系统 1.原因 Eclipse自带新建JSP为: <%@ page language= ...
- gcm 被微信弃用的原因
作者:feng xixi链接:https://www.zhihu.com/question/21514839/answer/18496706来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- Ambari Views的自定义
下载ambari源码, ambari-views/examples/ 下面有很多例子,直接编译是不会成功的, 因为每一个例子项目都需要一个依赖 <dependency> <group ...
- 用Java编程计算兔子生兔子的问题
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析: 这是一个典型的Fibonacci数列问 ...
- 远程桌面.【转】Win10 家庭(home)版启用远程桌面(Remote Desktop)功能
ZC:YeJun的台式机是 Win10家庭版,默认我们想连上她的电脑是连不上的,用下面的方式,我的笔记本可以连上了 ZC:我的下载资料,存放于 "E:\BaiduYunDownload\Wi ...
- 用Heartbeat实现HA集群
HA即高可用(high avaliable),又被叫做双机热备,用于关键性业务,简单理解就是,有两台机器A和B,正常是A提供服务,B待机闲置,当A宕机或服务宕掉,会切换到B机器继续提供服务.常用实现高 ...