永发信息网

如何解码一个程序?

答案:2  悬赏:10  手机版
解决时间 2021-02-18 16:59
  • 提问者网友:爱了却不能说
  • 2021-02-18 08:22
现在有一个exe程序,估计是用visual basic编写的,我想解码,需要怎么做呢?
急啊
最佳答案
  • 五星知识达人网友:山君与见山
  • 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); } 另外,站长团上有产品团购,便宜有保证
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯