|
|
|
[求助]请教一个问题,有一个小软件想看内部是如处RS232通讯代码的
像是累加校验 不过这里恰好000601F9的帧头的和也是0,所以不知道校验是只对数据正文还是也包括头部。 byte : 0x01 + 0x08 + 0xF7 = 0x00 byte : 0x00 + 0x06 + 0x01 + 0xF9 = 0x00 再看看其它命令,看有没有规律。 |
|
[求助]请教一个问题,有一个小软件想看内部是如处RS232通讯代码的
如果协议是非公开的,没有文档可参照,只有对软件进行逆向了。 视软件的复杂情况,可能比较容易,也可能非常复杂。 不过有一些规律,可以作为指导,一般的通讯协议,大体都是这样一种数据帧的格式: SOF(Start of Frame) + 寻址信息 + 数据长度信息 + 数据正文 + 数据校验值 虽然不是所有的协议都遵循同样的方式,但大数数都是这样一个结构,这对于分析协议有很多的帮助。 而数据校验,如果是硬件产生,常用CRC;如果是嵌入式软件,一般都采取比较简单的校验算法,比如字节异或,或者字节累加等,通常不会用太复杂的校验方式的,当然不排除例外情况。 |
|
[已解决]opera.dll如何脱壳
直接upx -d脱掉。 |
|
[求助]在虚拟机中如何返回到调用的地方?
不知道你指的是什么虚拟机。 如果是VB的虚拟机,或PB虚拟机等,那么程序会一直在虚拟机里转,因为程序中不存在本机代码,只有所谓的伪指令,或P-CODE。 换句话说,“进入虚拟机的地方”也就是程序入口点,而且是只进不出的。 如果是指VMP之类的壳的虚拟机,如果程序是全部VM了,那跟上面的情况是类似的;如果是个别函数被VM了,那一般通过分析堆栈可以找到返回地址,不过这根本没什么意义,因为被VM掉的代码才是有价值的、需要保护的代码。 |
|
[求助]OllyDbg调试“最前窗口”时假死
你应该同时说一下不选“always on top”选项时的情况。 |
|
[求助]请教一个问题,有一个小软件想看内部是如处RS232通讯代码的
你指的是分析通讯协议吗? hook所有的对com1文件的读写操作,将数据包保存下来分析即可。 还有一种方法,利用“虚拟串口”软件,把两个虚拟串口相连接,让软件打开其中一个,自己写个程序打开另一端,同时也打开物理串口,让自己的程序当做一个中继,同时也就可以分析数据了。 |
|
[讨论]一个小C程序
修正一下,最后再加个\n就和原来完全一样了。 |
|
[讨论]一个小C程序
int main() { for ( int i = 0; i < 3; ++i ) { printf("a rose%s", &(" is \0 is \0."[i*5])); } return 0; } |
|
[求助]大智慧II新一代还原器 没有注册码请高人帮助破解一下,不胜感激!!
看雪论坛不提供除技术讨论以外的所谓“破解”。 |
|
[求助]求一个VC6.0下的HELLO WORLD, 看似很简单的问题,在CSDN上没人解决,不知道这里会怎样
代码量大当然可以用C来写,但是我不知道如何将16位代码和32位代码链接在一起,也不知道在C中如何交叉调用,比如16位调用32位函数。 所以,至少还需要一部分opcode hack来做交叉引用的代理。 其实,更好的办法是像OSLoader一样,16位代码和32位代码写成两个模块,用16位代码加载32位的程序到内存中,完成必要的初始化后直接将控制转移给纯32位代码。当然,要加载程序入内存需要对可执行文件的格式非常熟悉。 |
|
[求助]NOP掉驱动文件后不能保存可执行文件EXE
就是所谓的“堆栈平衡”。 如果CALL的函数没有参数,或者是__cdecl约定的,那么把CALL指令直接换成NOP指令就可以了。 如果函数是__stdcall约定的,那么应该视参数个数,将原来的CALL指令换成add esp, XXX这样的指令。这里XXX就是压入堆栈的参数的以字节计算的大小,比如压入一个整型参数,那么就是add esp,4 |
|
[求助]求一个VC6.0下的HELLO WORLD, 看似很简单的问题,在CSDN上没人解决,不知道这里会怎样
其实这个事说简单也简单,如果对汇编和opcode有一定了解的话;说麻烦也挺麻烦,因为VC等编译器不支持生成16位代码,而Turbo C这样的编译器又不支持生成32位代码。 不过毕竟我们要生成DOS程序,32位代码只完成一个很小的功能,所以还是选择用DOS下的16位编译器,而对32位代码采取一些opcode hack的技巧了。 大体过程如下:建立保护模式必要的数据结构,主要指GDT,而IDT呢,我们不打算搞得复杂,所以不打算在保护模式下打开中断,就不用了。 GDT建好后,载入GDTR这个寄存器,然后置CPU中CR0的PE位,再用一个near Jmp将预取指令队列flush一下,我们就进入保护模式了。 返回实模式就清除CR0中的PE位即可。 对了,如果要访问1M以上的内存,需要打开A20;如果不访问内存,不打开A20也没有影响。 这个 4GMEM.zip 是梁肇新先生写的一个程序,在DOS下进入保护模式,给FS装入4GB的limit,然后再返回到实模式下。于是,借助于FS段,以及0x66,0x67前缀,实现了在DOS下对4GB地址空间的访问能力。 参考这个程序,相信你就可以完成自己的程序了。在保护模式下,直接写入显存,即0xB8000,即可实现字符串的输出。 对了,这个程序是在Turbo C下测试成功的,要在纯DOS环境运行,不能在Windows下的ntvdm环境下运行的。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值