|
也谈 HOW TO CODE A LOADER
实现了我前一段时间在论坛里提到的一个想法。谢谢。 |
|
[求助]找内存修改程序
可以在寄存器放了机器码的内存地址后中断,读出寄存器的值然后修改值所对应的内存空间。 刘健英的keymake的工具“内存注册机”就是这么干的,但是他只把内存的值读出来,这用来对付明文比较的注册机制足够了。 |
|
[注意]Robby32DASM v0.01 图形界面版本发布,呵呵~~
最初由 dyk158 发布 支持,测试结果如上 |
|
softice的符号调试
最初由 采臣・宁 发布 IDA2SICE只是转换成.nms文件而已,.nms已经有了,也装载了,但没效果。我怀疑我的操作步骤有误。边试边等大侠们的提示。 |
|
|
|
|
|
关于反汇编
简单理解反汇编就是把机器代码或二进制形式的代码(如vb的编译结果)解释成汇编代码或者伪代码(比如vb的伪代码) |
|
指令修改的问题
最初由 hangj 发布 正如你所说的,结果已经实现了。但我要的不是结果,才有此一问,还是谢谢你的回答,但我怀疑不是反汇编的bug,因为如果我不用最前面的两个字节完成跳转的话,在IDE环境里会出错,可以这么猜:delphi的反汇编结果与反汇编软件一样。那会不会是有哪个地方表明某几个字节的代码的长度是固定的呢?因为nop是单字节的,可是反汇编软件并不解释成单字节,虽然看到的值是nop(90)。 或许动态调试一下就清楚了。 |
|
时代人事管理系统 V(算法分析简单)高手莫入
无聊,也跟着分析了一下,注册机就不公布了,包括读入和显示14行代码就可搞定。 :u cs:eip l 100 001B:0061A90C PUSH EBP 001B:0061A90D MOV EBP,ESP 001B:0061A90F XOR ECX,ECX 001B:0061A911 PUSH ECX 001B:0061A912 PUSH ECX 001B:0061A913 PUSH ECX 001B:0061A914 PUSH ECX 001B:0061A915 PUSH ECX 001B:0061A916 PUSH ECX 001B:0061A917 PUSH ECX 001B:0061A918 PUSH EBX 001B:0061A919 PUSH ESI 001B:0061A91A MOV [EBP-04],EAX 001B:0061A91D XOR EAX,EAX 001B:0061A91F PUSH EBP 001B:0061A920 PUSH 0061AA08 001B:0061A925 PUSH DWORD PTR FS:[EAX] 001B:0061A928 MOV FS:[EAX],ESP 001B:0061A92B XOR EAX,EAX 001B:0061A92D MOV [EBP-10],EAX //注册码清零 001B:0061A930 LEA EDX,[EBP-0C] 001B:0061A933 MOV EAX,[EBP-04] 001B:0061A936 MOV EAX,[EAX+00000300] 001B:0061A93C CALL 0047F86C //读用户名 001B:0061A941 MOV EAX,[EBP-0C] 001B:0061A944 CALL 00404FB4 //取用户名长度 001B:0061A949 MOV EBX,EAX //EBX保存用户名长度 001B:0061A94B TEST EBX,EBX //用户名是否为空 001B:0061A94D JLE 0061A989 //为空不计算注册码 001B:0061A94F MOV ESI,00000001 //初始化esi 从用户名的第一个字节开始读取 001B:0061A954 LEA EAX,[EBP-14] //ebp-14返回lstrcopy读出的字符串,lstrcopy中的dest参数 001B:0061A957 PUSH EAX //参数入栈 001B:0061A958 MOV ECX,00000001 //count 001B:0061A95D MOV EDX,ESI //index 001B:0061A95F MOV EAX,[EBP-0C] //lstrcopy中的source参数 001B:0061A962 CALL 00405214 //lstrcopy d6与d7的这个函数声明不一样? 001B:0061A967 MOV EAX,[EBP-14] function _LStrToPChar(const s: AnsiString): PChar; { -> EAX pointer to str } { <- EAX pointer to PChar } 001B:0061A96A CALL 004051B4 //function _LStrToPChar(const s: AnsiString): PChar; 字符串转成字符 001B:0061A96F MOV [EBP-08],EAX //eax是_LStrToPChar函数的返回值 001B:0061A972 MOV EAX,[EBP-08] //ebp-08存放lstrcopy读出的字符的地址 001B:0061A975 MOV AL,[EAX] //al存放取出用户名字节 001B:0061A977 AND EAX,000000FF //只用低8位进行计算,其余清零 001B:0061A97C IMUL EAX,EAX,0x26FEA3 //eax=eax*2555555 001B:0061A982 ADD [EBP-10],EAX //[ebp-10]=[ebp-10]+eax 001B:0061A985 INC ESI //esi++ 读取用户名的下一个字节 001B:0061A986 DEC EBX //ebx-- 001B:0061A987 JNZ 0061A954 //计算用户名的下一个字节 001B:0061A989 XOR EBX,EBX 001B:0061A98B LEA EDX,[EBP-18] 001B:0061A98E MOV EAX,[EBP-04] 001B:0061A991 MOV EAX,[EAX+00000304] 001B:0061A997 CALL 0047F86C //读用户输入的注册码 001B:0061A99C MOV EAX,[EBP-18] //s 001B:0061A99F XOR EDX,EDX //i=0 001B:0061A9A1 CALL 00409C80 //strtointdef(s,i) 注册码转成整数,如果s不是数字,则返回i 001B:0061A9A6 CMP EAX,[EBP-10] 001B:0061A9A9 JNZ 0061A9DD 001B:0061A9AB LEA EDX,[EBP-1C] 001B:0061A9AE MOV EAX,[EBP-04] 001B:0061A9B1 MOV EAX,[EAX+00000300] 001B:0061A9B7 CALL 0047F86C //读用户输入的用户名 001B:0061A9BC CMP DWORD PTR [EBP-1C],00 //用户名长度不能为空 001B:0061A9C0 JNZ 0061A9C6 001B:0061A9C2 XOR EBX,EBX 001B:0061A9C4 JMP 0061A9C8 001B:0061A9C6 MOV BL,01 001B:0061A9C8 MOV EAX,0065475C 001B:0061A9CD MOV EDX,[EBP-0C] 001B:0061A9D0 CALL 00404D2C //???? 001B:0061A9D5 MOV EAX,[EBP-10] 001B:0061A9D8 MOV [00654760],EAX 001B:0061A9DD XOR EAX,EAX 001B:0061A9DF POP EDX 001B:0061A9E0 POP ECX 001B:0061A9E1 POP ECX 001B:0061A9E2 MOV FS:[EAX],EDX 001B:0061A9E5 PUSH 0061AA0F 001B:0061A9EA LEA EAX,[EBP-1C] 001B:0061A9ED MOV EDX,00000002 001B:0061A9F2 CALL 00404CFC 001B:0061A9F7 LEA EAX,[EBP-14] 001B:0061A9FA CALL 00404CD8 001B:0061A9FF LEA EAX,[EBP-0C] 001B:0061AA02 CALL 00404CD8 001B:0061AA07 RET 001B:0061AA08 JMP 00404610 |
|
指令修改的问题
最初由 鸡蛋壳 发布 鸡蛋壳 先生: 我这里用先生,不用同志称呼你,是因为我性取向正常,为了避免误会,特此声明一下。当然也不是因为你品德高尚,而称你为先生。 我也搞不懂你用的是什么逻辑,我破解控件就一定要写成软件,写成软件就一定要拿去卖。前面我也声明了,我不是程序员,我的工作不需要开发软件。 或许我可以这样理解,你本人非常痛恨用破解控件写成软件来卖的人。如果是这样,我可以明确的告诉你,你找错人了。如果你要继续表达你对这种人的痛恨,找他们去,别在这里坏了我的贴子。 btw:好好的一个技术讨论贴,别搞成吵架贴。 |
|
|
|
|
|
|
|
|
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值