RSA
JAVA层没什么东西,直接将输入送入了Native层的stringFromJNI函数
这个函数垃圾代码极其的多
建议动态调试,跟随输入值来观察计算过程
在主函数中首先用gpower生成了32个字节的i²Table,又GetTicks取了两次时间,然而都没有用上
sub_3133C调用了input,从其中用到的字符串
“basic_string::_S_construct null not valid”
来看,应该是静态编译的basic_string类的构造函数
结构体中存放了字符串的长度和其他信息,将指针送给了第一个参数
sub_309E0中没有改变字符串,只是把string的指针送给了返回值,因此就不多纠结了
跟入那个长的很像库函数名字很奇葩但其实就是核心函数的prj函数
上来第一句
if ( *(_DWORD *)(v2 - 12) == 31 )
虽然一般都能猜出来这个31大概就是input的长度,但较真的话往前翻也能在sub_309E0中找到根据,或者动调可以更直观地看到这个数据
继续往下,逐字节异或了byte_4DECB数组,很常规的操作
这里的操作看起来比较复杂,但理清了其实很简单