|
[分享]听说妙计被抓,请问一下那位知道内情的
我也想知道,呵呵 |
|
[求助]如何卸载Dll
楼主好像是想远程卸载,这样的话不太容易GetLastError |
|
[求助]IE给www.93801.com劫持了(问题已解决,大家可以来参考下)
修改hosts文件,直接把url干掉 |
|
[求助]NtWriteVirtualMemory 在SSDT 中出现,但 ntoskrnl.exe 并没导出 应该怎么实现ssdthook
简单的看一下xtrap的实现,它是对不同的系统之间使用对应序号来实现的。 |
|
[求助]IAT的修复
你给的那张图很明显是一个IAT hook,而且你没有说你的程序崩溃了,应该是注入后正常工作了。至于为什么不是每次都有,那我就不清楚了,毕竟我不是写马的。 挂钩那个API能得到程序中的大部分的字符串,估计是用了偷帐号吧。 |
|
[求助]IAT的修复
可能是有马吧 |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
本来都准备放弃,有了这个,我再努力一下,争取能写出服务端程序。 |
|
[分享]IDA Pro权威指南 中文版 花钱买来的,网络首发
虽然已经买了纸版的,但这个还是要收藏。多谢! |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
所有记录下来的数据中,都没有64位的。另外那个a2随机生成后要and 0x7FFFFFFF,实际上只有31位。 那个LODWORD是我的错误造成了反编译的时候加上的,原因是我设置函数返回值类型的时候直接给了个int,实际上应该是__int64,因为返回值保存在edx和eax中。改为__int64后,再F5,就没有那2个LODWORD了。汗呵,误导了版主,怎么办啊..... |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
经过对代码的跟踪,搞清楚了发送的明文之间的关系。 客户端先生成2个素数S1,S2,再生成一个随机数x,然后计算S3为 S3 = expmod( S1, x, S2); 下来客户端将S1,S2,S3发送给服务器。 服务器返回数R,然后再计算 expmod(R, x, S2); 根据这个过程,感觉有点象ElGamal算法的密钥产生和签名的过程,只是这里的随机数都是x,而ElGamal算法密钥产生时随机数是x,签名时的随机数是k,而且取值不一样。 另外,后面的数据加解密算法是等位算法,就是密文有多长,明文就有多长。而ElGamal算法的密文长度是明文长度的2倍,从这一点来看,也不太象。 |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
再请教一下,关于求逆的问题。 上面版主分析不可逆是因为中间变量做了mod 2^32,这样就丧失了高32位的数据。但实际上所有输入的a1,a2,a3虽然定义是64位的,但实际的数据都是32位的,同时中间变量也都是经过mod后才赋值的,这样,那个LODWORD其实是没有作用的,因为经过mod a3之后,a3本身是32的,mod后的值肯定是32位的。这样,是否可以说这个函数在输入参数全部都是32位时是可逆的? |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
可能我是异想天开,或者是偷懒。因为我对密码学是一窍不通,我是刚才搞明白了 1 mod (p-1)(q-1)是什么意思。 其实就这个帖子里的内容,我好像也说了几个名词,但其实我根本就不明白那些是什么含义。 多谢版主的帮助,看来我还需要啃啃数学才行。 |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
实际上不是要求这个函数的逆算法,是想知道这个函数在干什么,而知道第一个参数是含义,进而自己计算第一个参数,因为这个参数是由服务器上返回的。已知的情况包括: 1.客户端向服务器发送了3个10进制明文字符串,其中2个是素数。 2.服务器向客户端返回了一个10进制明文字符串,但响应的速度很慢,一般都是客户端把同一个明文包发送2次后,服务器才返回这个字符串。 3.客户端进行了类似 a_exp_b_mod_c 的计算,其中a是服务器返回的数,c是客户端发送的一个素数,b由客户端生成但并未发送到服务器上去。 4.上面3步完成后,客户端才开始对用户数据进行加密(根据我个人很不成熟的判断,是DES),提交给服务器。 能否通过这些描述猜测到服务器是如何生成那个10进制明文字符串的。 |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
想知道是什么算法,知道了算法之后,应该就能求逆。 其实如果理解为 a_exp_b_mod_c 的话,就可以理解为是RSA的加解密函数,只是实际中的a和c都太小,虽然每次客户端都重新生成2个素数p和q,但那2个素数也都太小,同时在这个函数中的c竟然是素数q,而在RSA中的c=n=p*q,除非p=1。 另外,这个方向也是反的,如果要每次重新生成密钥,那么应该在服务器上生成p和q,然后把公钥发给客户端,这个程序则完全是相反的。 觉得有点意思,但看的一头雾水,只是自己在瞎猜。 |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
写一下具体的过程。 客户端首先生成3个大数,S1,S2,S3,并在内存中给出其10进制字符串存储形式。其中,S1,S2都是素数。然后将这3个大数的10进制字符串发送给服务器。服务器返回一个大数R1的10进制字符串。下来计算 someunknow( a1, a2, a3 ),其中 a1=R1, a3=S2, a2也是客户端在recv之前自己生成的,但是内存中没有这个数的10进制字符串。 再有2组具体的值参考一下: S1=843535321 prime S2=a3=1429519807 prime S3=1387999978 R1=a1=383574431 prime a2=1185432916 RESULT=297473086 S1=1010133239 prime S2=a3=1145723269 prime S3=618234794 R1=a1=1134638003 NOT prime a2=2005332635 RESULT=578739491 实际上接收到的R1绝大多数都不是素数,上面第一个样本是素数应该是偶然。 |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
a1, a2, a3 都是大数,实际的数据中,一般都是9位、10位的10进制数。a3是素数,a1,a2不是。 a2,a3是本地产生的,a1是接收来的。接收到的a1,我估计是用来产生密钥的,程序后来再次的send和recv,我看那个解密函数可能是DES的(因为能看到一个8位到8字节的映射关系),但昨天搜索到2003年论坛上的一个讨论扩展欧几里德算法的,说求乘法逆元是给后面的RSA做密钥的,可是密码学的东西我实在看不懂。 |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
另外,关于效率的问题, 如果是a1^a2%a3,那么正常的算法不就要乘上a2次才行,那时间就很可怕了,应该是O(a2)。而这个算法仔细看一下,就知道最多只乘64次,就是乘法的次数是a2的最高有效位的序号值,取模的次数也是一样的,也是最多64次,就是O(64),基本上算是个常量了。而在一般情况下,a2是远远大于64的。我跟踪过的a2基本上都是9位的10进制数。 |
|
请熟悉算法的兄弟帮忙看一下这是什么算法,多谢
多谢指出了取模有合并律。 不过,算法的中间量V4,V5都是只保存32位值,而a1,a2,a3都是64位的,这样实际上除了对a3取模外,还先对2^32取了模,不知道同时有2个不同的取模值时,合并律是否有效? 就是如下的 ((a1 % a3) % (2^32)) * ((a1 % a3) % (2^32)) % a3 * a1 % a3 这个取模运算应该如何合并? |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值