|
[求助]这些汇编代码怎么了
有h说明是十六进制数,去掉h就变成十进制了,而十进制里面没有c,所以4c00会有语法错误。编译不通过,就没法连接了。如果不是这样就可能是你连接的参数不对。 地板,楼下的补充~ |
|
[求助]帮忙看下是什么加密?
只贴加密后的东西没什么用,要贴就贴加密算法或者代码,别人还能帮你分析一下。虽然坛子里的强人很无敌,但也没猛到看天书的地步吧? |
|
[求助]我有以下数据想求各位帮助找到前14位生成最后一位的算法.
你前14位怎么来的?这15位用在什么地方?每行数据之间有联系吗?加密算法有很多,总不能就这看着猜吧,要想办法找线索。。。。 |
|
|
|
[求助]我有以下数据想求各位帮助找到前14位生成最后一位的算法.
你要是有验证程序的话,跟踪一下不就行了?没有的话,你都知道14位了,最后一位,暴力一下吧。。。 |
|
[求助]push的先进后出
对,不“弹”出eax,就没有办法“弹”出ecx,因为eax在ecx上面。但是可以不改变堆栈(不改变ESP的值),直接读出以前的ecx,比如 mov ecx,[esp+4] |
|
|
|
[求助]各位大侠帮帮忙我呀.用UltraEdit32修改exe文件出现的问题.
按理说可以啊。你是怎么改的?网址是数据包的一部分,不能只改地址。也就是说IP地址后面不能填充00。数据包的开头是 GET,结尾是是2个换行,又因为它是字符串,所以结尾是 0D 0A 0D 0A 00。那你贴的图来说,需要改3个地方,第一个地方是从0000C590~0000C5E8,当你把www8.china12355.com 换成 222.139.238.65,这是还差5个字符,不能填充00,要把后面的字符直到0000C5E8往前挪,最后再填充5个00,也就是把原来最后的 65 0D 0A 0D 0A 改成 00 00 00 00 00。其他2处改法一样,这样应该就可以了。 |
|
[求助]延迟一段时间的汇编代码是什么?
看看有没有引入Sleep函数,调用这个函数就行了。 |
|
求助]新手的IDA问题
我也新学 IDA ,感觉 IDA 最好的地方就是它的高度互交性,凡是它分析有误的地方,你都可以自己改过来。至于未知结构体,应该只有用到的字段才能被判断出来吧?我是这么想的。这里有个例子。 http://www.hex-rays.com/manual/primer.shtml |
|
[讨论]一个偶然的错误引发的思考
最近在学 IDA 用法,官方教程,还不错。你可以看一下。其实不管是 IDA 还是 OllyDBG,用法都差不多,主要是遇到问题的分析思路。举个例子,比如下面的,楼主可以自己试着用 OllyDBG 走一遍这个这个过程。 http://www.hex-rays.com/idapro/debugger/debugger.pdf |
|
[求助]如何把日文字串翻成為看的懂的日文字串? [我是用CXAT翻的]
这个应该是编码问题吧,用 Shift-JIS 看看。 比如说,把你导出来的日文字符串放到一个txt文件里,然后用 IE 打开,选 Shift-JIS 编码,看看能变过来么?不行就只能从开始的解码部分想办法了。 |
|
|
|
[分享]关于内存注册机的相关问题2
再优化一下 ntsd 的参数: ntsd -pd -pn agms60.exe -c "bp msvbvm60!_vbaStrComp;g;g;du poi([esp+8]);bc 0;g" 在显示了注册码之后,立即清除断点,这样 ntsd 就不会再把目标软件拦下来了,无论什么时候关闭 ntsd ,目标软件都不会出错了~ |
|
[求助]为什么我就添冲了ansi结构就不对了呢?
invoke MessageBox,0,addr @anstr.Buffer,addr @anstr.Buffer,MB_OK 去掉 addr 试一下,@ansistr.Buffer 本身就是指向字符串的指针了,不要用 addr 了。 RtlInitAnsiString The RtlInitAnsiString routine initializes a counted ANSI string. VOID RtlInitAnsiString( IN OUT PANSI_STRING DestinationString, IN PCSZ SourceString ); Parameters DestinationString Pointer to the ANSI_STRING structure to be initialized. SourceString Pointer to a null-terminated string with which to initialize the counted string. Return Value None Comments The Buffer member of DestinationString is initialized to point to the SourceString. The length and maximum length for the DestinationString are initialized to the length of the SourceString. If SourceString is NULL, the lengths are zero. |
|
[求助]关于test,and,or的问题
OR - Inclusive Logical OR Usage: OR dest,src Modifies flags: CF OF PF SF ZF (AF undefined) Logical inclusive OR of the two operands returning the result in the destination. Any bit set in either operand will be set in the destination. Clocks Size Operands 808x 286 386 486 Bytes reg,reg 3 2 2 1 2 TEST - Test For Bit Pattern Usage: TEST dest,src Modifies flags: CF OF PF SF ZF (AF undefined) Performs a logical AND of the two operands updating the flags register without saving the result. Clocks Size Operands 808x 286 386 486 Bytes reg,reg 3 2 1 1 2 AND - Logical And Usage: AND dest,src Modifies flags: CF OF PF SF ZF (AF undefined) Performs a logical AND of the two operands replacing the destination with the result. Clocks Size Operands 808x 286 386 486 Bytes reg,reg 3 2 2 1 2 从结果上来说,没区别。 清零的是 xor eax,eax |
|
[求助]C++函数返回值是引用的疑问。请教
先贴代码再分析好了,VC2005 Release, 禁用优化,OllyDBG分析。 #include <stdio.h> int inc0(int a, int b) { a = a + b; return a; } int inc1(int& a, int b) { a = a + b; return a; } int& inc2(int& a, int b) { a = a + b; return a; } int inc3(int* a, int b) { *a = *a + b; return *a; } int* inc4(int* a, int b) { *a = *a + b; return a; } int main() { int a = 1; inc0(a, 2); inc1(a, 2); inc2(a, 2); inc3(&a, 2); inc4(&a, 2); return 0; } 004017D0 /$ 55 push ebp 004017D1 |. 8BEC mov ebp, esp 004017D3 |. 51 push ecx 004017D4 |. C745 FC 01000>mov dword ptr [ebp-4], 1 004017DB |. 6A 02 push 2 ; /Arg2 = 00000002 004017DD |. 8B45 FC mov eax, dword ptr [ebp-4] ; | 004017E0 |. 50 push eax ; |Arg1 004017E1 |. E8 CAFFFFFF call 004017B0 ; \Test01.004017B0 004017E6 |. 83C4 08 add esp, 8 004017E9 |. 6A 02 push 2 ; /Arg2 = 00000002 004017EB |. 8D4D FC lea ecx, dword ptr [ebp-4] ; | 004017EE |. 51 push ecx ; |Arg1 004017EF |. E8 9CFFFFFF call 00401790 ; \Test01.00401790 004017F4 |. 83C4 08 add esp, 8 004017F7 |. 6A 02 push 2 ; /Arg2 = 00000002 004017F9 |. 8D55 FC lea edx, dword ptr [ebp-4] ; | 004017FC |. 52 push edx ; |Arg1 004017FD |. E8 6EFFFFFF call 00401770 ; \Test01.00401770 00401802 |. 83C4 08 add esp, 8 00401805 |. 6A 02 push 2 ; /Arg2 = 00000002 00401807 |. 8D45 FC lea eax, dword ptr [ebp-4] ; | 0040180A |. 50 push eax ; |Arg1 0040180B |. E8 40FFFFFF call 00401750 ; \Test01.00401750 00401810 |. 83C4 08 add esp, 8 00401813 |. 6A 02 push 2 ; /Arg2 = 00000002 00401815 |. 8D4D FC lea ecx, dword ptr [ebp-4] ; | 00401818 |. 51 push ecx ; |Arg1 00401819 |. E8 12FFFFFF call 00401730 ; \Test01.00401730 0040181E |. 83C4 08 add esp, 8 00401821 |. 33C0 xor eax, eax 00401823 |. 8BE5 mov esp, ebp 00401825 |. 5D pop ebp 00401826 \. C3 retn 004017B0 /$ 55 push ebp ; int inc0(int a, int b) 004017B1 |. 8BEC mov ebp, esp 004017B3 |. 8B45 08 mov eax, dword ptr [ebp+8] 004017B6 |. 0345 0C add eax, dword ptr [ebp+C] 004017B9 |. 8945 08 mov dword ptr [ebp+8], eax 004017BC |. 8B45 08 mov eax, dword ptr [ebp+8] 004017BF |. 5D pop ebp 004017C0 \. C3 retn 00401790 /$ 55 push ebp ; int inc1(int& a, int b) 00401791 |. 8BEC mov ebp, esp 00401793 |. 8B45 08 mov eax, dword ptr [ebp+8] 00401796 |. 8B08 mov ecx, dword ptr [eax] 00401798 |. 034D 0C add ecx, dword ptr [ebp+C] 0040179B |. 8B55 08 mov edx, dword ptr [ebp+8] 0040179E |. 890A mov dword ptr [edx], ecx 004017A0 |. 8B45 08 mov eax, dword ptr [ebp+8] 004017A3 |. 8B00 mov eax, dword ptr [eax] 004017A5 |. 5D pop ebp 004017A6 \. C3 retn 00401770 /$ 55 push ebp ; int& inc2(int& a, int b) 00401771 |. 8BEC mov ebp, esp 00401773 |. 8B45 08 mov eax, dword ptr [ebp+8] 00401776 |. 8B08 mov ecx, dword ptr [eax] 00401778 |. 034D 0C add ecx, dword ptr [ebp+C] 0040177B |. 8B55 08 mov edx, dword ptr [ebp+8] 0040177E |. 890A mov dword ptr [edx], ecx 00401780 |. 8B45 08 mov eax, dword ptr [ebp+8] 00401783 |. 5D pop ebp 00401784 \. C3 retn 00401750 /$ 55 push ebp ; int inc3(int* a, int b) 00401751 |. 8BEC mov ebp, esp 00401753 |. 8B45 08 mov eax, dword ptr [ebp+8] 00401756 |. 8B08 mov ecx, dword ptr [eax] 00401758 |. 034D 0C add ecx, dword ptr [ebp+C] 0040175B |. 8B55 08 mov edx, dword ptr [ebp+8] 0040175E |. 890A mov dword ptr [edx], ecx 00401760 |. 8B45 08 mov eax, dword ptr [ebp+8] 00401763 |. 8B00 mov eax, dword ptr [eax] 00401765 |. 5D pop ebp 00401766 \. C3 retn 00401730 /$ 55 push ebp ; int* inc4(int* a, int b) 00401731 |. 8BEC mov ebp, esp 00401733 |. 8B45 08 mov eax, dword ptr [ebp+8] 00401736 |. 8B08 mov ecx, dword ptr [eax] 00401738 |. 034D 0C add ecx, dword ptr [ebp+C] 0040173B |. 8B55 08 mov edx, dword ptr [ebp+8] 0040173E |. 890A mov dword ptr [edx], ecx 00401740 |. 8B45 08 mov eax, dword ptr [ebp+8] 00401743 |. 5D pop ebp 00401744 \. C3 retn 从上面可以看出 inc0 传入的是数值,返回的也是数值,函数里面不能改变外面的值。 inc1,2,3,4 传入的都是指针,在函数内可以改变外面的变量的值。inc1 和 inc3 返回的都是数值,inc2 和 inc4 返回的都是指针。inc1 和 inc3 基本上没有区别,inc2 和 inc4 基本上也没有区别。 从高级语言上看(比如C++),&a 和 *a 都可以起到将函数内外的变量联系起来的作用,无论改函数里面还是外面的变量,改的都是同一个地址的值。 &a 的定义方法感觉更直观一些,因为只要函数的参数名字,和传进来变量名字一样,别人阅读程序的时候也很容易理解指的是同一个变量。用起来也很方便,不用像指针那样,还要加*才能取变量的值。 *a 的定义方法随便一本编程书上都会讲,相对来说大家理解更深刻吧。 所以两种定义方法各有个的好处,不过使用的时候,要注意函数是怎么定义的,传递参数的时候配套使用就行了。 还有,inc1(1,2) 这样的写法是不对的。因为根据 inc1 的定义,这里需要传入的是一个变量(从汇编的角度来看这里需要的是一个变量的地址),而这里的 1 和 2 一样都是常数,一定要事先定义变量再传入才可以。 就好像我们能用 i++, 但是不能用 2++, 3++ 一样。 以上纯属个人理解,欢迎指正。 |
|
[求助]关于内存注册机的相关问题
我也试了一下,能跟出来注册码,不会用 keymaker 写 Dll 的内存注册机。。。 不过我和 lz 的不太一样啊?难道是 msvbvm60.dll 的版本问题?我的 dll 里面搜索都搜不到你图上面的指令。 我觉得要是真的想写内存注册机的话,用 debug api 一定能行,因为那样就可以自己定位 dll 的基址了。 |
|
[求助]游戏里聊天窗口内信息滚动显示是用哪个api函数实现的?
ScrollWindow 不知道对不对,试一下吧。。。 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值