/************************************************************************************
* 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的更多相关文章

  1. InpOut32 InputTest.cpp hacking

    /************************************************************************************ * InpOut32 Inp ...

  2. Rootkit Hacking Technology && Defence Strategy Research

    目录 . The Purpose Of Rootkit . Syscall Hijack . LKM Module Hidden . Network Communication Hidden . Fi ...

  3. 我的美国(北美)计算机CS实习面试经验分享

    过去的一年多里,参加了一些面试,虽然面过的公司不多,但都从头一直走到尾.毕竟自己也是花了大量的时间和精力在这一场场的面试里.所以,就絮叨下自己的一些经验,希望能给在美国找实习找工作的同学们提供一点点帮 ...

  4. I.MX6 ar1020 SPI device driver hacking

    /************************************************************************************ * I.MX6 ar1020 ...

  5. OK335xS GPMC nand device register hacking

    /********************************************************************************* * OK335xS GPMC na ...

  6. RFID Hacking–资源大合集

    原文: http://www.freebuf.com/news/others/605.html http://www.proxmark.org/forum/index.php RFID破解神器官方论坛 ...

  7. Hacking/Penetrating tester bookmark collection

    Blogs http://carnal0wnage.blogspot.com/ http://www.mcgrewsecurity.com/ http://www.gnucitizen.org/blo ...

  8. 斯坦福CS课程列表

    http://exploredegrees.stanford.edu/coursedescriptions/cs/ CS 101. Introduction to Computing Principl ...

  9. [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute

    剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...

随机推荐

  1. shiro配置

    web.xml <!-- Shiro Filter is defined in the spring application context: --> <!-- 1. 配置 Shir ...

  2. PAT 天梯赛 L1-005. 考试座位号 【MAP标记】

    题目链接 https://www.patest.cn/contests/gplt/L1-005 题意 有一个 考生号,一个试机座位,一个考试座位,给出试机座位,查询 考生号和考试座位 思路 MAP + ...

  3. 从Redux源码探索最佳实践

    前言 Redux 已经历了几个年头,很多 React 技术栈开发者选用它,我也是其中一员.期间看过数次源码,从最开始为了弄清楚某一部分运行方式来解决一些 Bug,到后来看源码解答我的一些假设性疑问,到 ...

  4. docker 中安装PHP扩展

    可以通过两种方式实现 1.pecl pdo_msql 方式二: docker-php-ext-install pdo pdo_mysql 如果报 /usr/local/bin/docker-php-e ...

  5. PHP-FPM 慢执行日志、网站隔离配置

    慢执行日志 1.配置文件下打开慢执行日志 vim /usr/local/php/etc/php-fpm.conf # 慢执行日志路径 slowlog = /path/to/slow.log # 设置超 ...

  6. jQuery垂直滑动切换焦点图

    在线演示 本地下载

  7. <nginx+PHP>nginx环境下配置支持php7

    [root@redhat7 ~]# wget http://am1.php.net/get/php-7.1.2.tar.gz/from/this/mirror [root@redhat7 ~]# ta ...

  8. Linux下使用USB模拟ACM串口设备【转】

    本文转载自:https://www.cnblogs.com/pied/p/4549614.html 这个想法之前就在脑袋里有过,最近公司产品要用到,所以多做了些了解. 1. USB 简介 USB 是 ...

  9. AMD C1E SUPPORT

    •C1E是一种电源管理状态,它可以让处理器节能不限于处理器内核.在CIE状态,可以通过降低内存时钟速度.关闭HT技术,来降低处理器能耗.这种新功能对于12核的处理器极其重要,因为这种处理器在设计上既增 ...

  10. code for 1 - 分治

    2017-08-02 17:23:14 writer:pprp 题意:将n分解为n/2, n%2, n/2三部分,再将n/2分解..得到一个序列只有0和1,给出[l, r]问l到r有几个1 题解:分治 ...