第八章: abex'crackme#2

VB文件的使用名为MSVBVN60.DLL,是VB的专用引擎.应注意,VB语言使用的是Unicode字符串

使用VB文件可以编译为本地代码(Native-Code)伪代码(Pseudo-code).

本地代码使用易于调试器解析IA-32指令;伪指令是一种解释器(interpreter)语言,它使用由VB引擎实现虚拟机并可自解析的指令(字节码).

想要准确解析VB的伪代码需要分析VB引擎并实现模拟器.伪代码的好处是方便移植.

第八章: abex'crackme#2

 

 

 在401238的地址上,push指令把 RT_MainStruct结构体 的地址压入栈.这个结构体中存储着其它结构体的地址(国外大佬分析出的).

另外,上面红字的地方,是一个间接(indirect)调用法.

经多次调试可以发现VB程序经常对字符串进行移动,每次运行的地址都会不同.

第八章: abex'crackme#2

 

 

 下图中,push的三个地址,其中两个的地址( 0019F290 , 0019F280 ) +8 即可得到存储着之前计算好的值 和 加密的值.

19F290中的8,经过初步调试,感觉像是用作测试,在程序运行的过程中,8是否改变.

第八章: abex'crackme#2

 

 后期经过调试发现,地址19F238在函数中,会取地址+8中的值.

 

上一篇:下载10m/s!不限速阿里云网盘如何获取注册邀请码?​


下一篇:从网络交换机拉的网线直接插入电脑连不上网