现在有一个exe程序,估计是用visual basic编写的,我想解码,需要怎么做呢?
急啊
如何解码一个程序?
答案:2 悬赏:10 手机版
解决时间 2021-02-18 16:59
- 提问者网友:爱了却不能说
- 2021-02-18 08:22
最佳答案
- 五星知识达人网友:山君与见山
- 2021-02-18 09:13
如果你想解除源码是不可能的了,只可以通过反汇编得到汇编代码!具体你可以使用OD这个工具!
全部回答
- 1楼网友:想偏头吻你
- 2021-02-18 10:13
#include //特殊寄存器头文件
#define c(x) (x*110592/120000) //是晶振值,为计数器计一下所需要的微秒数,120000为12m,110592为11.0592m
sbit ir_pin=p3^3; //位声明,把p3.3/外部中断1的状态读到ir_pin中
unsigned char code led_tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共阳极数码显示码0-f.
unsigned char code led_sel[]=; //位选编码
unsigned char led_buf[4]; //显示缓冲区
char led_index; //位选信号定义
unsigned char ir_buf[4]; //用于保存解码结果
//==============================================================
//数码管扫描
timer0() interrupt 1 using 1 //定时器中断零程序
{
th0=(65536-1000)/256;
tl0=(65536-1000)%256; //定时器0设定约1000us中断一次,用于数码管扫描
p0=0xff; //数码管初始显示零
p2=led_sel[led_index]; //位选
p0=led_tab[led_buf[led_index]]; //段选
if(++led_index>3) led_index=0; //四个扫描完了,到第一个数码管
}
//==============================================================
unsigned int ir_get_low() //脉冲为低电平的时间
{
tl1=0;
th1=0; //为定时器1赋初值
tr1=1; //开启定时器1
while(!ir_pin && (th1&0x80)==0); //判断,如果p3.3口为低电平则执行tr1=0
tr1=0; //关闭定时器1
return th1*256+tl1; //返回th1*256+tl1的值
}
//=============================================================
unsigned int ir_get_high() //脉冲高电平时间
{
tl1=0;
th1=0; //为定时器1赋初值
tr1=1; //开启定时器1
while(ir_pin && (th1&0x80)==0); //判断,如果p3.3口为低电平则执行tr1=0
tr1=0; //关闭定时器1
return th1*256+tl1; //返回th1*256+tl1的值
}
//==============================================================
main()
{
unsigned int temp;
char i,j;
led_index=1;
tmod=0x11;
tl0=(65536-1000)%256;
th0=(65536-1000)/256; //定时器0设定约1000us中断一次,用于数码管扫描
ea=1; //开总中断
et0=1; //定时计数器0的开放控制位
tr0=1; //定时器0的运行控制位
led_buf[0]=0;
led_buf[1]=0;
led_buf[2]=0;
led_buf[3]=0; //显示区设成0
do{
restart:
while(ir_pin); //判断p3.3口
temp=ir_get_low(); //取脉冲为低电平的时间
if(tempc(9500)) continue; //引导脉冲低电平9000
temp=ir_get_high(); //取脉冲高电平时间
if(tempc(5000)) continue; //引导脉冲高电平4500
for(i=0;i<4;i++) //4个字节
for(j=0;j<8;j++) //每个字节8位
{
temp=ir_get_low();
if(tempc(800)) goto restart; //根据编码格式,低电平小于0.2ms大于0.8ms视为无效电平,重新检测
temp=ir_get_high();
if(tempc(2000)) goto restart; //根据编码格式,低电平小于0.2ms大于2ms视为无效电平,重新检测
ir_buf[i]>>=1; //把ir_buf[i]右移一位,然后赋值给ir_buf[i]
if(temp>c(1120)) ir_buf[i]|=0x80; //根据编码格式,如果电平大于1.12ms,则把0x80赋值给ir_buf[i]
}
led_buf[0]=ir_buf[2]&0xf;
led_buf[1]=(ir_buf[2]/16)&0xf;
led_buf[2]=ir_buf[3]&0xf;
led_buf[3]=(ir_buf[3]/16)&0xf; //显示结果
}while(1);
}
另外,站长团上有产品团购,便宜有保证
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯