Hi all
Im lookin for some sample code as the topic describes, i have searched for hours but all i can seem to find is code using Visual studio .NET (which i dont have)
So if anyone knows how to or has some source they wouldnt mind sharing, that includes TAPI i would be very greatfull
Im very much a "newbie" C++ programmer but i learn quickly.
Thanks in advance
I wrote a little bit on TAPI a while back look at
http://forum.xda-developers.com/viewtopic.php?t=18978
download the dll file and you will see how to make a tapi datamodem connection.
Cheers for the link mate
Very interesting , and complicated !!
mamaich said:
Occasionally I've found this page - http://blogs.msdn.com/sloh/archive/2005/05/27/422605.aspx
It has an interesting code at the bottom. I've already made a program that can hook system calls, I'll try to hook EnterCriticalSection and WaitForMultipleObjects and force them to use that code. Maybe this would reduce the occasional lockdowns.
Click to expand...
Click to collapse
I've made such a program. It gave no noticeable improvements for me, but I've attached it to this post with source code.
Source code would be interesting to people, who need to hook kernel functions that are implemented in nk.exe.
The function uses LoadKernelLibrary to load DLL, DLL relocates SystemAPISets table to writeable memory and hooks needed functions.
Code has no comments and looks ugly, but is short and should be easy to understand.
mamaich: thanks so much for this. I need all the hooking code I can get my hands on right now.
Will look at this ASAP. In your debt
V
Thanks...I've just started programming in EVC++ 4, so it might be useful.
Project is compiled with VS2005, it can be ported to eVC4. And it is designed for WM5, but should work also with older OSes, maybe minor modifications in internal OS structures may be necessary.
Hi,
Can someone assist me with how i might go about decompiling or viewing a dll, making changes to it and recompiling it? What tools can i use to do this?
I have tried copying some of the dlls from my device over to my local pc, however most of the time i get an "access violation" message.
Further, i realize i can use idlasm to disassemble .net files, but it seems most of the more interesting dlls and files may be standard c dlls. How can i take a look at the code in these and modify if wanted?
thanks much.
farseer: what level of experience do you have?
V
I'd like to think i am decent developer, but that may be in my own mind
However, i do not do a lot of "hacking", i.e., have not had the need to do much reverse engineering. I have been coding ground up apps for over 10 years however, uisng C++, Java, C#, VB, etc. You name the language, and i've probably done something in it .
vijay555 said:
farseer: what level of experience do you have?
V
Click to expand...
Click to collapse
was that the wrong answer?
farseer said:
I'd like to think i am decent developer, but that may be in my own mind
However, i do not do a lot of "hacking", i.e., have not had the need to do much reverse engineering. I have been coding ground up apps for over 10 years however, uisng C++, Java, C#, VB, etc. You name the language, and i've probably done something in it .
vijay555 said:
farseer: what level of experience do you have?
V
Click to expand...
Click to collapse
Click to expand...
Click to collapse
The correct answer should be "I know ARM assembler language, the structure of Win32 PE files, I know what is XIP DLL and why I cannot modify them directly, and I have read the WM5 source code".
In this case the process is simple - you decompile a DLL with IDA (www.datarescue.com), find the place you need, modify the code to suit your needs - and that is all. In most cases there is not enough place in DLL for your code, so you need to use virus-like techniques, my prefered method is to patch the code so that it loads my DLL and run it instead of original code. Or use some other hooking methods so that my code is executed instead of original.
Ah, thanks much, this was helpful. I do have a few follow up questions:
1. Is "Arm assembler" different than standard assembler? If so, any suggested readings?
2. There are some dlls that cannot be copied to my local pc (i get an access violation i believe). How does one extract an image of such dlls?
3. Where is the WM5 source code? and why would i need to read this to be able to hack/patch dlls?
thanks again.
mamaich said:
The correct answer should be "I know ARM assembler language, the structure of Win32 PE files, I know what is XIP DLL and why I cannot modify them directly, and I have read the WM5 source code".
In this case the process is simple - you decompile a DLL with IDA (www.datarescue.com), find the place you need, modify the code to suit your needs - and that is all. In most cases there is not enough place in DLL for your code, so you need to use virus-like techniques, my prefered method is to patch the code so that it loads my DLL and run it instead of original code. Or use some other hooking methods so that my code is executed instead of original.
Click to expand...
Click to collapse
Hi farseer!
I am nowhere near the level of mamaich or vijay555 but I have some experience in this and I believe I can give you some basic answers:
1. ARM is a different architecture then x86 processors and the assembler is different to accommodate it. There are some basic similarities like mov add and such, but even the registers are different (R0 - R15 if I am not mistaken). Sorry, I don't know any books on it, but if you google you will quickly find the list of commands with basic explanation.
2. Since the OS is in ROM you can't just copy and paste it's DLLs and EXEs. Look for ROM dumping tools on this forum, or already extracted images on the ftp. Keep in mind MS did some tricks to save memory and make it harder to get at the files, so like mamaich said, you need to learn about XIP and the ROM structure in general to understand whats going on.
3. Hmm... MS does have a program for sharing most of WM source code, but it's not for common people like us. (check out their site to see what I mean) I suspect there are other sources of getting the parts necessary to understand DLL hooking, but I have no idea what they might be.
Well that's my two cents until an expert can answer you. Hope this helps.
farseer: you gave a perfectly good answer IMHO, just needed to get an idea of what level to pitch a response without talking up or down to you!
It's well documented that I'm a self confessed newb to c++, and would say that your programming skills should certainly hold you in good stead. However, having a good knowledge of the Win32 API is certainly beneficial.
For decompiling, basically IDA. There is an IDA demo available on their website that should get you going, it's pretty much 100% functional other then it won't save, and closes itself (or crashes itself) after a reasonable, random period of time. IDA is "the daddy" for pretty much all mainstream reversing, although you could write your own decompiler/debugger.
Recompiling - that's a toughy. IDA won't permit recompiling on ARM AFAIK.
You'll have to hexedit into the target and patch directly. Otherwise you get into the exciting world of code injection, hooking etc, as Mamaich says.
For that area, read everything he's ever written, before you start reversing
Oh, and a helpful hint to all. Don't just read what Mamaich's written on this board, his posts on other boards are even more useful!
It's worth getting a good familiarity with reversing on x86 first, get used to how IDA works etc (and Soft Ice is very useful to give a good insight into x86, although AFAIK it's not available for WinCE). ARM assembler is different, but just grab a list of the opcodes and read through a few CPU developers' guides (online).
There are a number of tutorials on reversing ARM stuff online. In the usual places for that kind of stuff.
For getting access to the ROM files, easiest way is to grab a rom update file and decrypt it. Mamaich is once again your man, his romtools do the job. He also has a "live" rom grabber, that'll grab all the files/modules out of your running phone for your perusal.
Platform Builder is available free to give you (some) WinCE source code. Not all, but enough to give you years worth of reading.
V
Thanks all...very kind of you to respond in such detail. I look forward to dabbling a bit with IDA and some of mamaich tools. I suppose the first order of business is to do a lil more research and then just dive in! It's been a while since i wrote any assembly code (not since college!), but i am a bit excited at having an excuse to do so again.
thanks again.
Just remember that unless you really luck out and the developer left the symbol table intact, you're going to end up with garbage for the names of variables and subroutines.
I hate reading decompiled code.
Greetings,
I'm software developer on PC platform (few successful projects - for example quite innovative picture, comic viewer) - actually with .NET Basic by choice(I never was up to all C++, C# etc.)
I'm looking for someone who would realize, compile, use given code/algorithm to create working image viewer.
More precisely, I've on mind code that would simulate "multi-touch" zooming etc. Furthermore I've wrote basic eVB code - but didn't manage to run it from unknown reason :/
I am afraid you are out of luck as far as eVB is concerned.
It is not supported on the new OS, and by new I mean anything after WM 2002 (I think 2003 woks, but buggy).
You have two choices: convert your code to VB .NET or get someone to convert it to C / C++ / C#.
By the way C# is very similar to VB .NET so if you put your mind to it you should have no trouble learning it.
I do not know what your plans are for this software - sell it, distribute for free or what ever, but if you wan community help with the entire source it would probably be better if you published it.
Of course thats up to you, but if you intend to give people your code and have them help with development it would be a good idea to state the conditions upon which the code is given in advance to avoid unpleasant misunderstandings later on.
levenum said:
I am afraid you are out of luck as far as eVB is concerned.
It is not supported on the new OS, and by new I mean anything after WM 2002 (I think 2003 woks, but buggy).
Click to expand...
Click to collapse
Nah I thought about other way than eVB.
levenum said:
You have two choices: convert your code to VB .NET or get someone to convert it to C / C++ / C#.
Click to expand...
Click to collapse
I program in VB.net, about C# & C++ too - but I dislike them.
levenum said:
By the way C# is very similar to VB .NET so if you put your mind to it you should have no trouble learning it.
Click to expand...
Click to collapse
Matter of removing few operators and structures. And still most of operations is purely made on logic, mathematic level. So language doesn't matter except basic GUI.
levenum said:
I do not know what your plans are for this software - sell it, distribute for free or what ever, but if you wan community help with the entire source it would probably be better if you published it.
Click to expand...
Click to collapse
I assume it should be open source - however software that I develop on my own is freeware for non-commercial use with closed code. But as said - in this case I think it should be open source.
levenum said:
Of course thats up to you, but if you intend to give people your code and have them help with development it would be a good idea to state the conditions upon which the code is given in advance to avoid unpleasant misunderstandings later on.
Click to expand...
Click to collapse
Know that.
Unlucky few touch-interface based image viewers are developed, few commercially, rest isn't something special. From my own programing experience I know it's not hard to add some solutions.
Hi first I must apologize for posting here I know I should post in the questions and answers section, I have already done this twice with two similar posts but I have not received a reply I beleive because the expert programmers are less likely to look there to help people as most questions are about useing software not developing it. anyway here is what i posting before I really hope someone can help me...
Hello everyone I was wondering if anyone could answer this question for me.
I am creating a wm app and for part of it i want some information from googlemaps, the maps api is in java and i was thinking of ways to incorperate this into my app. Can i create a java program to get data from google and have my c# program run the java program and get info from it? I could write my program totally in java but i don't like the way i have to first start the vm and launch my program from that is there a way to automate this? also I need quite a lot of information from the phone so using c# will make getting this info easier.
or are there any other ways i might be able to get the info I want, I don't really know anything about applets but could they somehow be used?
oh btw the specific data i want is distance between to map locations (via googles route not direct)
many thanks i hope someone can help
I apologize again for posting in here but this app is for a final year project and I need to know if im barking up the wrong tree as soon as possible.
I might be wrong here, but to the best of my knowledge, Google Maps API is actually JavaScript API, not Java. If you found Java API, it's most likely a wrapper. And if it exists, I'm sure C# wrapper should exist as well. You might want to take a look at this. I know it's not exactly what you are looking for, but it might be helpful to some degree. Also, one other thing I can suggest, is to look at Virtual Earth API. I'm almost 100% positive, that they do have a C# implementation of the API.
Hi hobbbbit thanks so much for your reply, so googlemaps api is javascript , I have never used javascript before and saw that the api used objects methods and looked like java so i just assumed thats what it was. If there isn't a wrapper for c# do you (or anyone) know of a way of using the api to obtain one of the objects and use it in c#?
I would use virtual earth but unless I am totally wrong here I thought to use it you needed a licence which costs around $8000 which I don't want to pay for. Even with google if I wanted to release the app i think I would have to pay although I have contacted them and they say I can develop my app using the free api.
**EDIT**
Ok well I took another look at virtual earth, I really am a complete idiot. I signed up for a FREE developers account so hopefully everything I need I can get from there.
again thanks for your advice if you hadent posted I would probably still be trying different ways to hack google earth to work in my wm app.
On codeplex is a windows forms project that uses googlemaps api as wel as a few others. Im pretty sure you can get an idea of how to go about this from there
cornelha said:
On codeplex is a windows forms project that uses googlemaps api as wel as a few others. Im pretty sure you can get an idea of how to go about this from there
Click to expand...
Click to collapse
Superb this was just the thing I was looking for I will be sure to study this code closely. Thanks so much for the information.