⑴ 如何对一个lib静态库保护起来不被反编译
这个太麻烦了吧,除非他反编译成汇编,读懂全部汇编语言,然后用c去实现。逆向工程量太大。我们做一般是加花指令,迷宫函数来混淆代码。
⑵ 呃,请问怎么修改单机游戏的编程码
修改运行的PC游戏,这个最简单,有《金山游侠》《FPE》《GB4》等修改工具。。。
要修改游戏程序代码,这个就难了,你得懂汇编,编译原理,编译流程,各种PE执行文件或其他执行文件或代码的数据结构,各种静态库以及动态链接库的结构,等等。。。一系列编程知识,而且还得具备一定的硬件知识,以及操作系统知识。。。然后用反编译工具把游戏的执行文件以及库文件反编译,将执行文件或代码反编译成汇编代码,更好一些的反编译工具能把代码反编译成C/C++代码,只是这些代码完全没有变量命名,所有变量都用A1、B1这样的。。。然后根据程序执行来猜某块代码的大致作用,然后再将代码完全读懂,最后才能修改代码。。。这个。。。非常困难,就是职业程序员高手,并且已经具备了我上面说的一切知识以及技能,也非常难。。。因为反编译程序,极度欠缺可读性,有些宏以及编译系统的伪指令扩展后,反编译出来的代码非常难读懂。。。这必须要是专业干这个的,对编译系统足够了解,并且习惯了反编译代码的那类专业人士才能真正的干好这件事。。。总之这是件极度专业的事情。
⑶ 用C做的静态库,能破解成C语言吗
目前没有技术可以把C和C++编译出的机器语言反编译成源程序
但是可以反编译成汇编程序,这个叫反汇编。
因此:用C做的静态库,不能破解成C语言
⑷ ios a静态库 能反编译吗
.a静态库不能进行反编译,反汇编的可能性也极低。
静态库:静态库仅在程序启动时被连接使用,程序运行时将不再需要该静态库。
与静态库相对的是动态库:程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
⑸ 有关于Visual Studio 2005 EXE程序反编译成可用代码的问题~!~
你应该选择使用静态库啊。动态库你要运行必须连相关的dll一起拷贝到别人电脑上去!
还有一些特别的情况,虽然是针对VC2005的,但是对VC6也有参考价值。
前面一些是我在网上找的,后面的有些是我自己现添加的,希望对你有帮助!
报错"由于应用程序配置不正确,应用程序未能启动.重新安装应用程序可能会纠正这个问题"
//------------------------------------------------------
这个问题主要出现在XP环境下运行由Visual C++2003/2005编译的MFC程序时
问题现象是XP运行此类程序时,报错"由于应用程序配置不正确,应用程序未能启动.重新安装应用程序可能会纠正这个问题"
这个问题似乎许多人遇见过.在CSDN和微软社区里面都有人提到.但是没有完整的解决方案
这个问题的解决一共会遇见2个子问题
最早出现这个错误我和许多人认为的一样
认为是缺乏DLL库文件导致.但是在测试机复制了DLL甚至安装了.net framework 2.0以后
都无法解决问题,最后确认不是由缺乏DLL所致
因为程序是纯win32的应用程,非托管代码,所以也无需.net framework
Visual C++2003/2005默认的MFC程序是使用动态MFC库(Use MFC in a Shared DLL)来链接的
而动态MFC库使用的是Multi-threaded DLL (/MD)
由于XP对于PE文件格式监测更加严格.
就会导致部分使用多线程DLL的可执行文件在调用的时候出错
修改项目属性的编译开关
Project->Property->configuration Properties->C/C++->Code Generation->Runtime Library
修改成Multi-threaded (/MT)
修改了Runtime类型以后
需要将MFC的编译类型也改成静态库
Project->Property->configuration Properties->General->Use of MFC
修改成Use MFC in a Static Library
一部分情况下在这步就能解决问题
另外一部分情况会遇见如下情况
编译器报错
CODE:
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmt.lib(newaop.obj)
[Copy to clipboard]
产生这个问题的原因是库依赖关系
在Project->Property->configuration Properties->Linker->Command Line
加入编译开关/verbose:lib可以显示详细的库链接顺序
CODE:
------ Build started: Project: PerfMonDemo, Configuration: Release Win32 ------
Linking...
Searching libraries
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\pdh.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\DelayImp.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\libcpmt.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\nafxcw.lib:
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmt.lib(newaop.obj)
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\libcmt.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\kernel32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\msimg32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shlwapi.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\uuid.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oledlg.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\urlmon.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\atls.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ws2_32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\mswsock.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleacc.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\pdh.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\DelayImp.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\libcpmt.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\nafxcw.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\libcmt.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\kernel32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\msimg32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shlwapi.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\uuid.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oledlg.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\urlmon.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\atls.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ws2_32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\mswsock.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleacc.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\pdh.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\DelayImp.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\libcpmt.lib:
Finished searching libraries
Searching libraries
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\pdh.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\DelayImp.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\libcpmt.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\nafxcw.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\libcmt.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\kernel32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\msimg32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shlwapi.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\uuid.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oledlg.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\urlmon.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\atls.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ws2_32.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\mswsock.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleacc.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\pdh.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\DelayImp.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\lib\libcpmt.lib:
Searching d:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\nafxcw.lib:
Finished searching libraries
.\Release/PerfMonDemo.exe : fatal error LNK1169: one or more multiply defined symbols found
Build log was saved at "file://d:\Dev\Performance Monitor\Release\BuildLog.htm"
PerfMonDemo - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
[Copy to clipboard]
我们发现在libcpmt.lib声明过的operator new在nafxcw.lib中再次定义
解决方法如下
Project->Property->configuration Properties->Linker->Input->Additional Dependencies
加入
nafxcw.lib
libcpmt.lib
Project->Property->configuration Properties->Linker->Input->Ignore Specific Library
加入
nafxcw.lib
libcpmt.lib
这样链接程序就不会先按照默认顺序来连接这两个库文件
而是在最后在加入对他们的引用.这样就避免了这个问题
下面是一张可能发生冲突的列表
若要使用此运行时库 请忽略这些库
单线程 (libc.lib) libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
多线程 (libcmt.lib) libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
使用 DLL 的多线程 (msvcrt.lib) libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
调试单线程 (libcd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib
调试多线程 (libcmtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib
使用 DLL 的调试多线程 (msvcrtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib
//本人曾经对上面的方法进行测试,修改后可能出现XX无法解析的情况,请大家使用MSDN查找该函数,并且找到该函数对应的lib库文件。将其添加到附加依赖项或者是用#pragma comment(lib,"xxx.lib")将其添加到代码中!
⑹ C++的函数前向声明为何不能编译器自己提前扫描变更函数时向前声明带来的维护难度
函数声明的作用是什么?
函数声明的目的是向编译器引入一个函数名字以及函数类型,这个主要用于类型检查和增加可读性。
为什么要使用函数声明?
因为函数可能在别的地方定义(如:静态库文件、动态链接库、另一个编译单元里),如果没有函数声明,编译器在编译的时候就只能根据函数调用推断函数的类型,由于C++存在的隐式转换和函数重载,根据函数调用的参数来推断函数的类型是不够的。
你说的编译器提前扫描不可行,因为C++的函数可以定义在其他地方,可能函数体已经编译成可执行代码了(动态链接库中的函数就是这中情况),其次编译器一次只能处理一个编译单元(一个文件),对于其他编译单元定义的函数,编译器管不了,所以你说的这种方法不适用C++。
看看下面的例子:
假定f函数的定义在某个库文件里,并且函数类型为 double f( double, double )
f( 3, 4 );
f( 3.0f, 4.0 );
假如允许函数不声明直接调用,编译器只能根据调用语句的参数列表的类型来确定函数的类型。对于这个例子:编译器可以认为f函数存在两个版本: void f( int, int ) 和 void f( float, double ),编译器也可以认为f函数只有一个版本: void f( float, double )。不管哪种推断 ,连接的时候都会出现连接错误。 所以你说的方法不可行。
为什么其他语言可以不声明直接使用?
其他语言(比如java和C++)可以不用声明直接使用,这是因为这些语言是解释型的语言。对于解释型的语言,代码首先经过编译器简单编译成某个中间语言,在运行的时候由解释器“一行一行”翻译。这种语言编译后的代码包含很多的信息,使用一些反编译软件几乎可以还原源代码。由于编译器认识中间语言,所以对于任何未声明或者未定义的实体的引用,编译器都能到编译好的代码中去寻找。
为什么C语言允许函数不声明直接使用?
C语言的函数不允许函数重载,所以一个函数名字一定对于一个函数定义,并且C语言的函数符号一般是一个下划线+函数名(比如上面的函数f的函数符号就是 _f ),没有上面提到的问题,编译完成后C语言的连接器就会去寻找函数符号 _f的定义,如果找到生成可执行文件,如果找不到则报错。所以C语言运行不声明函数,但是貌似最近的C语言标准已经取消了这个规则(C语言的标准我不是很关注,你想知道就自己去看看C语言的最新标准),主要的原因还是这种语法不安全。
使用前进行声明是个好习惯,可以提高阅读性,哪些不声明直接使用的代码,容易使人迷惑。
以上是我个人的看法有问题可以提出。
⑺ java的软件如何脱壳
用OD载入该软件,搜索下字符串,可以很快知道这个软件是java写的,并且用exe4j打包的。
改成
[XML]纯文本查看复制代码
Manifest-Version: 1.0Ant-Version: Apache Ant 1.9.4Created-By: 1.6.0_45-b06 (Sun Microsystems Inc.)Main-Class: com.fx24k.fxtrader.trader.FxClient⑻ 如何看懂lib文件里的东西
想用一个静态库必须要里面函数的声明,就是头文件。有些动态库都需要头文件呢~没有头文件绝对不可能。
完全看懂是不可能的。要是看懂了相当于反编译了!
如果只要使用,找出一部分函数是有可能的。
你去网上搜索一下“lib 文件结构”
其实可以看到一部分,看到一些函数,你用记事本打开lib。可以看到
xxx@yyy@@zzz 之类的东西。
zzz代表函数名,yyy代表该函数所在的类名,zzz代表参数类型。
可以猜到一部分`~,这个是C++写成的库,C语言写的库是没有类名和参数名的(因为不支持类也不支持重载)。
你再把相映的头文件自己补写上,
再#include "头文件"
#pragma comment(lib,"lib文件");
祝你好运了~~
⑼ 如何在android studio中用JNI调用静态库
androidstudiondk调用过程如下:通过jniaes案例说明调用NDK层配置过程而我们通过底层来判断签名是否正确,如果正确则继续执行核心代码,否则退出程序,这样就可以防止别人恶意反编译,并进行二次打包。首先去官网下载一个最新的NDK,随便放到哪都行,像我放在D:\Dev\Android\android-ndk-r10d.(1)新建一个项目:名称JniAes首先在java类中添加native接口,注意写好native接口和System.loadLibrary()即可。代码如下:();();(Contextcontext);4然后buildproject得到其中中间文件,我们关注的是.class文件。编译OK以后生成的class文件在AS工程的如下目录:aes\app\build\intermediates\classes\debug\android\(2)接下来跟class文件生成相应的.h头文件,执行如下命令即可点击"View->ToolWindows->Terminal"即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件.javah-djni-classpathc:\Users\sodinochen\AppData\Local\Android\sdk\platforms\android-16\android.jar;..\..\build\intermediates\classes\debugcom.aes.jniaes.MainActivity(3)然后将刚才的.h文件剪切过来。在jni目录下新建一个c文件,随意取名,我的叫strk.c。strk.c文件,用于实现核心代码逻辑,判断包名.哈希值是否合法,如果返回1,为合法。反之,则不合法。入口方法为:jintJava_com_aes_jniaes_MainActivity_jniCheckAPP(JNIEnv*env,jobjectcontext, jobjectthiz)接下来在工程的local.properties文件中添加NDK路径(上面下载好的那个NDK),类似其中的SDK路径一样,我的添加后如下:sdk.dir=D\:\\Dev\\Android\\android-sdk-windowsndk.dir=D\:\\Dev\\Android\\android-ndk-r10d(4)接下来在appmole目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下内容:defaultConfig{ applicationId"com.aes.jniaes" minSdkVersion15 targetSdkVersion22 versionCode1 versionName"1.0" ndk{ moleName"checkapp-jni" //生成的so名字 abiFilters"armeabi","armeabi-v7a","x86" //输出指定三种abi体系结构下的so库。目前可有可无。 } }(5)最后就是添加静态初始化loadLibrary代码,添加如下:static{ System.loadLibrary("checkapp-jni"); //so文件的名字 }编译出来的so文件在aes\app\build\intermediates\ndk\debug\lib目录下 那么如何将编译好的so文件进行使用,可以通过如下方式:二. 引用so文件(1).在“src/main”目录中新建名为“jniLibs”的目录;(2).将so文件复制、粘贴到“jniLibs”目录内。