搞定。NAVM2是一个虚拟机解释器,program.navm就是相当于用NAVM语言写的一个小程序,NAVM读入程序,运行。
程序的要求是破解program.navm这个程序,并给出破解文件。我补丁后的文件:
patch.rar
运行时用patch.navm代替program.navm就行了。
说明一下program.navm的指令格式:
指令长度:10(0x0A)个字节。具体的指令编码不太清楚,但是有几条指令还是知道什么含义的,要不然也不能patch program.navm。
例如:(1)01D1 1800 0000 0000 0000跳转指令。
jmp 0x18 跳转到第18条指令。
(2)E4D1 4E00 0000 3075 0000 定义字符串指令。
db 'N' 3075相当于字符串名称后续字符串为3175... FE75 FF75 0076...
(3)A1D0 3075 0000 0000 0000 打印字符串
printf 3075 字符串,3075就是(2)里面定义的名称。
(4)A0D0 E803 0000 0000 0000 格式输入
scanf E803 字符串
(5)04D1 1000 0000 0100 0000 条件相对跳转
jmp 0x10 (0100为条件) 如果条件为1则向前跳10条指令
(6)00D1 FF00 0000 0000 0000 Exit指令
Exit 0xFF(退出代码)
还有很多指令,我大部分靠猜的

,也不一定完全精确。知道上面的指令就可以写一个小程序了,我写了一个打印 "Hi!"字符串的小程序,然后以88退出。
hi.rar
大家可以试一下,挺好玩的crackme!