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 序 ...
随机推荐
- CSS 中文字体 Unicode 编码表
CSS 中文字体 Unicode 编码表 在 CSS 中设置字体名称,直接写中文是可以的.但是在文件编码(GB2312.UTF-8 等)不匹配时会产生乱码的错误. 为此,在 CSS 直接使用 Unic ...
- javascript Date对象 之 设置时间
之前对js的date对象总是感觉熟悉,而不愿细细深究其所以然,所以每当自己真正应用起来的时候,总会糊里糊涂的,今日花费2个小时的时间仔细钻研了一下,感觉 豁然开朗,故,以此记录,一来 供以后查阅,二来 ...
- hadoop17---RPC和Socket的区别
RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源.RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台 ...
- iOS 在cell中使用倒计时的处理方法(新)
一.前言 之前的文章iOS 在cell中使用倒计时的处理方法得到大量的支持, 在这先感谢大家的支持. 但是也收到不少人的回复表示不会用, 需要一一解答, 由于之前写的时候没有使用Markdown编辑, ...
- Python面试题之集合推导式、字典推导式
集合推导式 集合推导式(set comprehensions)跟列表推导式也是类似的, 唯一的区别在于它们使用大括号{}表示. Code: sets = {x for x in range(10)} ...
- 菜单Menu
<Menu HorizontalAlignment="> <MenuItem Header="文件"> <MenuItem Header=& ...
- 20165101刘天野 2018-2019-2《网络对抗技术》第1周 Kali的安装
20165101刘天野 2018-2019-2<网络对抗技术>第1周 Kali的安装 一.实验要求 Kali下载 安装 网络 共享 软件源 二.实验步骤 1.下载 从Kali官网中下载相应 ...
- sem学习
关键字的选取搜索引擎营销的关键字选取是非常重要的一步,合适的关键字可以为企业带来可观的咨询量.关键字一般分4种,品牌词,产品词,行业词,竞品词,对于这四类词不同的推广策略有着不同的侧重点,根据市场情况 ...
- EF Code-First 学习之旅 从已存在的数据库进行Code First
namespace EFDemo { using System; using System.Data.Entity; using System.ComponentModel.DataAnnotatio ...
- DNS解析过程和DNS挟持
1.DNS解析过程详解 1).在浏览器中输入一个域名,例如www.tmall.com,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析, ...